Apache的骆驼和践踏
问题描述:
我发展,其体系结构是一种解决方案: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一起工作?
答
使用JMS/ActiveMQ组件时,必须使用开放式传输。
tcp://localhost:61616
或你有什么。
但是别担心。即使使用STOP(或任何其他可用传输)将消息发送到ActiveMQ,也可以使用默认(开放式)传输,使用JMS API(以及Camel中的ActiveMQ组件)接收相同的消息。
答
根据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>
皮特,你说得对。我对端点的工作方式产生了误解。我使用tcp:// localhost:61616端点和使用stomp:// localhost:61613端点的PHP /发件人端尝试了与我的Java /接收端并通过消息。 – 2013-02-23 22:27:00
非常感谢。顺便说一句,我是一个stackoverflow N00B,你可以投票我的问题,以便我可以投票你的答案? – 2013-02-23 22:33:17