2013-02-23 156 views
4

我發展,其體系結構是一種解決方案:Apache的駱駝和踐踏

PHP -> JMS -> Camel -> several web services and endpoints. 

據:http://activemq.apache.org/php.html

...我應該使用PHP STOMP客戶端使用JMS。這很好。

我還使用ActiveMQ STOMP Java客戶端從JMS接收。

但是,我想使用Camel來路由JMS消息。我似乎無法讓Camel與JMS/Stomp一起工作。

我看了看https://github.com/fusesource/stompjms

...但我不知道如何獲取與駱駝工作。

我也嘗試了春天駱駝context.xml中有brokerURL指定STOMP:

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> 
     <property name="connectionFactory"> 
      <bean class="org.apache.activemq.ActiveMQConnectionFactory"> 
       <property name="brokerURL" value="stomp://localhost:61613" /> 
       <property name="userName" value="admin" /> 
       <property name="password" value="AmChamDev" /> 
      </bean> 
     </property> 
    </bean> 

...但是,那結果:

[ #0 - JmsConsumer[/queue/test]] ultJmsMessageListenerContainer WARN Could not 
    refresh JMS Connection for destination '/queue/test' - retrying in 5000 ms. 
    Cause: Could not create Transport. 
    Reason: java.io.IOException: Transport scheme NOT recognized: [stomp] 

如何讓駱駝任何想法與JMS/Stomp一起工作?

回答

5

使用JMS/ActiveMQ組件時,必須使用開放式傳輸。

tcp://localhost:61616或你有什麼。

但是別擔心。即使使用STOP(或任何其他可用傳輸)將消息發送到ActiveMQ,也可以使用默認(開放式)傳輸,使用JMS API(以及Camel中的ActiveMQ組件)接收相同的消息。

+1

皮特,你說得對。我對端點的工作方式產生了誤解。我使用tcp:// localhost:61616端點和使用stomp:// localhost:61613端點的PHP /發件人端嘗試了與我的Java /接收端並通過消息。 – 2013-02-23 22:27:00

+0

非常感謝。順便說一句,我是一個stackoverflow N00B,你可以投票我的問題,以便我可以投票你的答案? – 2013-02-23 22:33:17

1

根據http://camel.apache.org/stomp.html你需要包括其他依賴駱駝文檔:

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-stomp</artifactId> 
    <version>x.x.x</version> 
    <!-- use the same version as your Camel core version --> 
</dependency>