2011-12-06 54 views
1

我有一個系統有15個服務。我是駱駝和JMS遠程處理新手。有15個服務,我認爲我應該每個服務有一個傳入隊列。我需要多少個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.Multiplier)的作品。在客戶端,我得到了org.apache.camel.example.server.Divider的代理並調用divide()。該消息可以到達服務器端。但是當Camel嘗試處理消息時,駱駝只緩存綁定到jms:queue:numbers的第一個接口的代理。所以它沒有處理消息,並拋出異常

那麼這是否意味着如果我想用駱駝我使用jms遠程處理我需要一個2隊列(在/出)/類?這很貴嗎?

回答

1

如果你需要所有的服務使用相同的進入終點,然後利用路由器http://camel.apache.org/dynamic-router.html

+0

謝謝你的意見,但沒有我的服務不會有相同的數據輸入。它們都有不同的數據輸入。 – KingAndrew

+0

對不起,我不是指同一數據,我的意思是相同的結束點。 – Manoj