Apache Camel REST DSL 发送一些数据以及每个响应

Apache Camel REST DSL sending some data along with each response

我是 Camel 新手,想实现以下场景:

我正在使用 camel 开发 REST 服务 REST-DSL 并且每次响应时,我都必须发送一些数据(一个表示新通知数量的整数)。

以下是我如何使用 REST DSL 的代码:

        rest("/rest1").description("Rest1 service")                           
        .consumes("application/json").produces("application/json")

        .post("/addMultiple").typeList(Map.class).to("bean:somebean1?method=someMethod1(${body})")
        .post("/add").to("bean:somebean1?method=someMethod2(${body})")

        .get("/status").description("Find all request by status").outTypeList(Request.class)
        .to("bean:somebean1?method=someMethod3(${header.status})") ; 

         rest("/rest2").description("Rest2 service")
            .consumes("application/json").produces("application/json")

            .post("/add").type(FileBean.class).to("bean:someBean2?method=someMethod1(${body})")

            .get("/categories")
            .description("get all categories")
            .to("bean:someBean2?method=someMethod2()");

在这里,对于我发送的每个 JSON 响应,我必须发送一些整数计数以便在客户端持续更新。

如果我可以 header 并且每次响应我都通过设置新值来更新它会怎么样。

请告知如何实现这一点。

您可以在您的 bean 中添加 header,并使用 bean 参数绑定来绑定 Map headers,以便您可以添加计数器。

public String doSomething(String data, @Headers Map headers) {
   ...
}

查看更多详情

另一种方法是使用 on-completion 在路由末尾添加 header(需要 Camel 2.15 并使用 before consumer 模式)