Apache camel 驼峰文件聚合问题
详细信息:ApacheActiveMQ 5.9.1、ApacheCamel 2.15 我有一个调用批处理的Camel路由,然后该批处理id被输入到该路由中,见下文,并使用多播进行拆分。然后,每个foo(N)路由执行一些SQL并将其封送到CSV中。然后将路由的聚合馈送到文件聚合器中,该聚合器将文件拉入拉链 到目前为止我发现了什么;Camel 2.13不支持在头文件中使用Camel文件名,因此我升级到了2.15。如果我去掉所有那些可能返回空结果集的foo(N)路由,这个过程可以正常工作,但这不是一个选项。如果我打印每个foo(N)路由的内容,我会得到一个要生成的文件列表,即使是那些没有内容的文件 所以。。。那我该怎么办?卡住了! 有人能解释一下我遗漏了什么,或者我没有正确看到什么吗? 这是我的骆驼路线定义Apache camel 驼峰文件聚合问题,apache-camel,activemq,Apache Camel,Activemq,详细信息:ApacheActiveMQ 5.9.1、ApacheCamel 2.15 我有一个调用批处理的Camel路由,然后该批处理id被输入到该路由中,见下文,并使用多播进行拆分。然后,每个foo(N)路由执行一些SQL并将其封送到CSV中。然后将路由的聚合馈送到文件聚合器中,该聚合器将文件拉入拉链 到目前为止我发现了什么;Camel 2.13不支持在头文件中使用Camel文件名,因此我升级到了2.15。如果我去掉所有那些可能返回空结果集的foo(N)路由,这个过程可以正常工作,但这不是一个
新的java.text.simpleDataFormat(“yyyy-MM-dd hh:MM:ss”).format(request.headers.scheduledfitime)
foo1.csv
header.unique-foo-Id
fooobound.zip
我不确定自己是否理解。因此,在foo(n)路由中,如果sql调用返回空,是否表示未调用聚合文件路由?这是正确的。我要么它没有路由到聚合文件,要么它失败了。不管怎样,它都会挂起来。如果我看一下任务控制,我看到有一个等待线程。如果我注释掉返回零结果的路由,则一切正常。我确实在日志“message:[Body is null]”中找到了此消息。我不确定这是否与聚合的完成有关。是否尝试设置此参数?我在医生那里找到的。。consumer.routeEmptyResultSet。默认情况下,它是false。“如果没有要轮询的数据,是否路由单个空交换。”
<route>
<from uri="{{foo.cron.trigger.uri}}"/>
<setHeader headerName="unique-foo-Id">
<ognl>new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(request.headers.scheduledFireTime)</ognl>
</setHeader>
<multicast parallelProcessing="true" stopOnException="true">
<to uri="direct:foo1"/>
<to uri="direct:foo2"/>
<to uri="direct:foo3"/>
<to uri="direct:foo4"/>
</multicast>
</route>
<!-- each foo(N) route looks similar with different SQL -->
<route>
<from uri="direct:foo1"/>
<setHeader headerName="CamelFileName">
<constant>foo1.csv</constant>
</setHeader>
<to uri="sql:{{my.foo1.sql}}"/>
<marshal>
<csv/>
</marshal>
<to uri="direct:foo-aggregate-files"/>
</route>
<route>
<from uri="direct:foo-aggregate-files" />
<aggregate strategyRef="fileAggregatorStrategy" strategyMethodAllowNull="true" completionSize="4" forceCompletionOnStop="true">
<correlationExpression>
<simple>header.unique-foo-Id</simple>
</correlationExpression>
<setHeader headerName="CamelFileName">
<constant>fooOutbound.zip</constant>
</setHeader>
<to uri="file:{{foo.output.folder}}"/>
</aggregate>
</route>