我们可以在apache camel中使用多个mutlicast吗?

时间:2016-11-14 11:17:26

标签: apache-camel mybatis multicast

我有一个要求,我想在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

1 个答案:

答案 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>

http://camel.apache.org/recipient-list.html