我们可以在 apache camel 中使用多个多路广播吗?

Can we use multiple mutlicast in apache camel?

我有一个要求,我想在 Apache Camel 中使用 multlicast 而不是在单个路由中使用一次。即多播中的多播。

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

可以吗? 当我尝试这样做时,我的程序没有成功执行。 执行不成功是多重多播的结果吗? 有人可以帮忙吗? 我从以下 link 获得参考: http://camel.apache.org/multicast.html

为什么要使用管道?它默认 "is" 管道。

所有日志和转换和选择语句也可以放在多播之外。由于您是动态生成端点的,因此将值放在 header 中,并将收件人列表用于动态端点。多播用于 hard-coded 个端点。这是一个例子:

<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