我有一个要求,我想在Apache Camel中使用mutlicast,而不是在单个路径中使用一次。即多播内的多播。
<routeContext id="myRoute" xmlns="http://camel.apache.org/schema/spring">
<route id="myRouteId">
<from uri="activemq:queue:{{XXXX.queue}}" />
....
<multicast parallelProcessing="true">
<pipeline>
##everything working fine here
</pipeline>
<pipeline>
<multicast>
<pipeline>
<log message="Inserting in database now"></log>
<transform>
<method ref="insertBean" method="myBatchInsertion"></method>
</transform>
<choice>
<when>
<simple>${in.header.myCount} == ${properties:batch.size} </simple>
<to uri="sql:{{sql.core.insertMyQuery}}?batch=true"></to>
<log message="Inserted rows ${body}"></log>
</when>
</choice>
</pipeline>
</multicast>
</pipeline>
</multicast>
</route>
</routeContext>
有可能吗? 当我试图这样做时,我的程序没有成功执行。 不成功的执行是多播多播的结果吗? 有人可以帮忙吗? 我从以下链接获得了参考: http://camel.apache.org/multicast.html
答案 0 :(得分:0)
为什么要使用管道?它&#34;是&#34;管道默认。
此外,所有log和transform和choice语句都可以放在多播之外。由于您要动态生成端点,因此请将值放在标头中,并使用收件夹列表来设置动态端点。多播用于硬编码端点。这是一个例子:
<route>
<from uri="direct:a" />
<!-- use comma as a delimiter for String based values -->
<recipientList delimiter=",">
<header>myHeader</header>
</recipientList>
</route>