2016-11-14 6 views
0

단일 경로에서 Apache Camel에서 mutlicast를 한 번 이상 사용하려는 요구 사항이 있습니다. 즉 멀티 캐스트 내의 멀티 캐스트입니다.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

왜 파이프 라인을 사용합니까? 기본적으로 파이프 라인입니다.

또한 모든 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

+1

여러 개의 프로세스가 내부 멀티 캐스트에서 실행되므로 파이프 라인을 사용하는 이유가 있습니다. – KayV