MQTT和ActiveMQ通信

时间:2015-11-07 05:20:52

标签: node.js activemq mqtt

背景

我是MQTT和ActiveMQ的新手。我试图了解这两种技术,但是使用Node.js进行集成并不清楚。

目的

这里的目标是将MQTT与节点一起使用,然后使用ActiveMQ的代理。

问题

  1. 如果我在MQTT主题上发布消息,那么如何将该消息传输到ActiveMQ队列?
  2. 如果我有一个名为" Foo"的MQTT主题,那么ActiveMQ是否需要有一个名为" Foo"?
  3. 的队列
  4. Node.js是否支持MQTT协议?
  5. 在包含内容" Foo"的MQTT主题中发布消息之后使用Node.js,我如何从ActiveMQ队列中检索它?
  6. 修改

    我的MQTT正在另一台服务器上运行,所以我添加了下面的activemq.xml文件。但是,添加后,activemq在启动时会出现以下错误:

    <transportConnectors>
    <transportConnector name="mqtt" uri="tcp://<myhostname>:1883?      maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    

    那么如何在activemq队列中获取MQTT主题上发布的消息? 我是否需要任何其他配置或者是否需要首先使用java或任何其他技术订阅MQTT主题,然后在ActiveMQ队列上推送该消息?或者它自动执行ActiveMQ?

2 个答案:

答案 0 :(得分:0)

  1. 在ActiveMQ配置中使用compositeTopic(activemq.xml)。

                                                              

  2. 不,ActiveMQ有一个名为FOO的主题,由MQTT使用。

  3. 不,但Node.js有扩展,支持MQTT。

  4. 使用compositeTopic(参见#1)。

答案 1 :(得分:0)

“我的MQTT在不同的服务器上运行”是什么意思?

  1. 如果您想要群集内容,则应使用networkConnector而不是transportConnector。
  2. 如果您希望ActiveMQ接受MQTT连接,只需将协议从$location.path('/'+tab.label); 更改为uri="tcp://<myhostname>:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"