2016-11-14 10 views
0

У меня есть требование, когда я хочу использовать mutlicast в Apache Camel за один раз за один маршрут. то есть многоадресной рассылки в многоадресной рассылке.Можем ли мы использовать несколько mutlicast в верблюде apache?

<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

Почему вы используете трубопровод? По умолчанию это «есть».

Также все записи журнала и преобразования и выбора могут быть помещены вне многоадресной рассылки. И поскольку вы динамически генерируете свои конечные точки, поместите значения в заголовок и используйте список получателей для динамических конечных точек. Многоадресная рассылка предназначена для жестко кодированных конечных точек. Вот пример:

<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

+1

У меня есть несколько процессов, работающих под внутренней многоадресной рассылкой, вот почему я использовал конвейер. – KayV