我面临一个复杂的案例。 我正在做的是以下步骤:
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体,它也不起作用。我谷歌每个案例我都可以成像。没有帮助的案例。 请你帮助我好吗?非常感谢你。
答案 0 :(得分:1)
如果您希望jetty响应包含聚合器中的任何信息,那么您必须使用仅分路器方法,如下所示:
拆分器具有内置聚合功能,可确保拆分器何时完成聚合,然后您可以将其用作跳线响应。
当您使用<aggregate>
时,它将成为一个单独的交换。要更多地了解这一点,请阅读更多关于聚合eip和其他SO的内容,以及各种Camel书籍等。