Apache camel 驼峰文件聚合问题

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)路由,这个过程可以正常工作,但这不是一个

详细信息:ApacheActiveMQ 5.9.1、ApacheCamel 2.15

我有一个调用批处理的Camel路由,然后该批处理id被输入到该路由中,见下文,并使用多播进行拆分。然后,每个foo(N)路由执行一些SQL并将其封送到CSV中。然后将路由的聚合馈送到文件聚合器中,该聚合器将文件拉入拉链

到目前为止我发现了什么;Camel 2.13不支持在头文件中使用Camel文件名,因此我升级到了2.15。如果我去掉所有那些可能返回空结果集的foo(N)路由,这个过程可以正常工作,但这不是一个选项。如果我打印每个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>