首页 文章

发布后未收到消息 . RABBITMQ MQTT

提问于
浏览
0

我正在学习MQTT并面临一些问题,从http://blog.airasoul.io/the-internet-of-things-with-rabbitmq-node-js-mqtt-and-amqp/了解了与RabbitMQ的MQTT .

所以,这里的问题是当我运行发布者代码时,添加了一个队列 mqtt-subscription-test-qos1 但是当我发送消息时,'t get added in that queue. Although I' ve已将amq.topic的绑定添加到具有密钥绑定'presence'的此队列中 .

这是我的发布商代码

var payload = {
  message : 'Hello'
};

var client = mqtt.connect(url, { clientId: 'test-', clean:true});

client.on('connect', function () {

  client.publish('presence', JSON.stringify(payload), { qos: 1 }, function() {
    console.log("Sent");
    client.end();
    process.exit();
  });
});

以下是我的订户代码 .

var client = mqtt.connect(url, { clientId: 'test-', clean:true});

client.on('connect', function () {
  client.subscribe('presence', { qos: 1 });
});

client.on('message', function (topic, message) {
  console.log('received message ',  message.toString());
});

当我没有在发布商代码中声明具有connect函数的任何选项时,这是有效的 . 所以我不知道的是,发布者是不应该创建队列然后发布到主题?

我究竟做错了什么?

1 回答

  • 0

    在发布到主题之前,您不需要创建队列 . 发布第一个MQTT消息时,将使用默认交换名称“amq.topic”自动创建队列,并使用与主题名称相同的绑定键 .

    我怀疑您的订阅者没有收到自发布以来发布的消息,并在发布者发布消息后订阅该主题 . 首先尝试启动您的订阅者,然后启动您的发布者 .

相关问题