阿帕奇骆驼和跺脚

Posted

技术标签:

【中文标题】阿帕奇骆驼和跺脚【英文标题】:Apache Camel and Stomp 【发布时间】:2013-02-09 06:17:34 【问题描述】:

我正在开发一个解决方案,其架构是:

  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

...但我不确定如何让它与 Camel 一起使用。

我还尝试了一个带有指定 STOMP 的 brokerURL 的 Spring camel-context.xml:

  <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]

关于如何让 Camel 与 JMS / Stomp 一起工作的任何想法?

【问题讨论】:

【参考方案1】:

在使用 JMS/ActiveMQ 组件时,您必须使用开放式线路传输。

tcp://localhost:61616 或者你有什么。

但别担心。即使您使用 STOP(或任何其他可用传输)向 ActiveMQ 发送消息,您也可以使用默认(开放线路)传输使用 JMS api(以及 Camel 中的 ActiveMQ 组件)接收相同的消息。

【讨论】:

彼得,你是对的。我对端点的工作方式有误解。我在 Java/receiver 端使用 tcp://localhost:61616 端点和 PHP/sender 端使用 stomp://localhost:61613 端点进行了尝试,消息通过了。 非常感谢。顺便说一句,我是一个 *** n00b,你可以投票给我的问题,以便我可以投票给你的答案吗?【参考方案2】:

根据 Camel 文档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>

【讨论】:

以上是关于阿帕奇骆驼和跺脚的主要内容,如果未能解决你的问题,请参考以下文章

JMS 队列拆分。企业集成。阿帕奇骆驼

阿帕奇水槽和阿帕奇风暴有啥区别?

二战时期有阿帕奇吗?

【PHP】如何配置阿帕奇汤姆猫服务器?【急】

阿帕奇拼花和箭头之间的区别

服务器中apache(阿帕奇)是个啥软件,干嘛用的