Apache Camel从jetty获得空响应

时间:2015-01-08 05:15:03

标签: apache apache-camel

我面临一个复杂的案例。 我正在做的是以下步骤:

1)<from uri="jetty:http://0.0.0.0:30100/jetty/test"/>

2)<to uri="hazelcast-client:master-test-series" />

3)<to uri="bean:modelSeriesWrapperTest" />

4)

<split parallelProcessing="true" streaming="true">    
    <simple>${body}</simple>    <to uri="direct:dw.model.test"/>   
    </split>

5)从另一条路线

<from uri="direct:dw.model.test"/>
   <aggregate strategyRef="myAggregatorStrategy"
              completionTimeout="1000">
              <correlationExpression>
                  <constant>true</constant>
              </correlationExpression>
              <marshal ref="modelSeriesVariantColourGson" />
              <camel:to uri="file:src/data/catask/output?fileName=output.xml"/>
  </aggregate>

问题是码头响应是空的。我使用TCP跟踪来跟踪请求和响应,Content-Length为0.但output.xml文件具有正确的JSON格式内容。 即使我越过<camel:to uri="file:src/data/catask/output?fileName=output.xml"/>。码头响应仍然是空的。

我尝试InOut模式,它也不起作用。 它似乎直接返回码头,而不是等待拆分。我尝试设置In and Out体,它也不起作用。我谷歌每个案例我都可以成像。没有帮助的案例。 请你帮助我好吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

如果您希望jetty响应包含聚合器中的任何信息,那么您必须使用仅分路器方法,如下所示:

拆分器具有内置聚合功能,可确保拆分器何时完成聚合,然后您可以将其用作跳线响应。

当您使用<aggregate>时,它将成为一个单独的交换。要更多地了解这一点,请阅读更多关于聚合eip和其他SO的内容,以及各种Camel书籍等。