2011-12-06 3 views
1

15 개의 서비스가있는 시스템이 있습니다. 저는 낙타와 JMS 원격 작업에 익숙하지 않습니다. 15 개의 서비스를 통해 서비스 당 하나의 수신 대기열을 가져야한다고 생각했습니다. 나는 첫 번째 바인딩 (org.apache.camel.example.server.Multiplier가) 작동 발견몇 개의 Apache Camel 대기열이 필요합니까?

org.apache.camel.example.server.Treble implements two interfaces  
org.apache.camel.example.server.Multiplier and org.apache.camel.example.server.Divider. I bind the two interfaces to the same JMS queue: jms:queue:numbers 

<bean id="multiplier" class="org.apache.camel.spring.remoting.CamelServiceExporter"> 
      <property name="uri" value="jms:queue:numbers" /> 
      <property name="service"> 
       <bean class="org.apache.camel.example.server.Treble" /> 
      </property> 
      <property name="serviceInterface" value="org.apache.camel.example.server.Multiplier" /> 
    </bean> 
<bean id="divider" class="org.apache.camel.spring.remoting.CamelServiceExporter"> 
      <property name="uri" value="jms:queue:numbers" /> 
      <property name="service"> 
       <bean class="org.apache.camel.example.server.Treble" /> 
      </property> 
      <property name="serviceInterface" value="org.apache.camel.example.server.Divider" /> 
    </bean> 

:

그러나 큐는 하나의 인터페이스로 결합 할 수있는 것 같다. 클라이언트 측에서 org.apache.camel.example.server.Divider의 프록시를 얻고 divide()를 호출합니다. 메시지는 서버 측에 도달 할 수 있습니다. 그러나 Camel이 메시지를 처리하려고 시도하면 camel은 jms : queue : numbers에 바인딩하는 첫 번째 인터페이스의 프록시 만 캐시합니다. 그래서 메시지를 처리하고 예외를 던지지 못했습니다.

그래서 낙타로 jms remoting을 사용하려면 2 대기열 (in/out)/클래스가 필요합니다. 그게 비싼가요? 같은 수신 끝점을 사용하는 모든 서비스를 필요로하는 경우

답변

1

는 라우터에게 코멘트 http://camel.apache.org/dynamic-router.html

+0

감사를 사용하지만 내 서비스는 동일한 데이터 입력이되지 않습니다. 그들은 모두 서로 다른 데이터 입력을 가지고 있습니다. – KingAndrew

+0

미안하지만, 나는 같은 데이터를 의미하지는 않았다. 나는 같은 종말점을 의미했다. – Manoj