订阅多个主题,使用通配符还是创建实例?

科索阿迪

我目前正处于一个项目的中间,其中包括使用MQTT。我正在用node.js编写我的应用程序。我的项目需要连接/通信到每个设备已指定的多个设备以及不同的主题。稍后,每个消息中的数据将存储到数据库(MongoDB)中。我正在使用npmjs.com 1的mqtt包

以下是mqtt软件包代码的示例:

var mqtt    = require('mqtt');
var client  = mqtt.connect('mqtt://test.mosquitto.org'); 
client.on('connect', function () {
    client.subscribe('presence');
    client.publish('presence', 'Hello mqtt');
});
client.on('message', function (topic, message) {
    // message is Buffer 
    console.log(message.toString());
    client.end();
});

我的问题是我应该怎么做才能从设备中获取消息。我可以使用“#”轻松列出单个主题,以获取所有主题,但是我必须手动对主题进行排序/拆分等。

但是,我在考虑另一种选择,其中我将为每个主题创建新的mqtt客户端实例,但是我不知道实例是否有限制。我可能会使用async包2中的forever函数我的代码可能是这样的:

var async = require('async');
var mqtt = require('mqtt');
var client = mqtt.connect("URL of MQTT broker");

var _topic = "";

var Subscriber = function(topic){
    this._topic = topic;
    client.on('connect', function () {
        client.subscribe(this.topic.setter);
    });
    async.forever(
        function(next){ 
        client.on('message', function (topic, message) {
            // TO DO store message
        });
    },
        function(err){
            client.end();
        }
    );
};

module.exports = Subscriber;

有人有什么建议吗?

专有名词

我不建议为您要进行的每个订阅创建单独的连接。每个连接都是一个新的TCP连接,将浪费您的应用程序和代理中的资源。

此处的正常模式是使用通配符订阅。消息回调处理程序将消息来自的主题传递给消息回调处理程序,因此,只要您合理地构造主题空间,那么在应用程序中适当地路由消息的开销就很小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为多个Zookeeper实例创建Kafka主题

来自分类Dev

Dojo的发布/订阅-如何订阅多个主题

来自分类Dev

python pubsub订阅多个主题

来自分类Dev

python pubsub订阅多个主题

来自分类Dev

SI 订阅多个 mqtt 主题

来自分类Dev

多个应用实例消耗了发布/订阅主题中的所有消息

来自分类Dev

RxJS订阅较少的多个主题与订阅较多的单个主题

来自分类Dev

如何在Java上使用PAHO订阅多个主题和多个MqttCallback

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

Mqtt订阅了Contiki中的多个主题

来自分类Dev

Azure功能:是否可以订阅多个主题?

来自分类Dev

Scala 如何订阅多个 kafka 主题

来自分类Dev

哪个更好?每次使用静态方法还是创建新实例?

来自分类Dev

使用Python不能创建多个类实例

来自分类Dev

脉冲消息确认适用于主题还是订阅?

来自分类Dev

RxJS-多个订阅者未使用行为主题+共享执行

来自分类Dev

如何订阅多个主题而不传递列表且不使用模式

来自分类Dev

连续创建多个实例时使用正确的类实例

来自分类Dev

在ARM中使用事件中心主题类型创建事件网格订阅

来自分类Dev

订阅者创建后,使用者无法从主题中获得消息

来自分类Dev

使用Windows Azure Service Bus REST API以编程方式在主题中创建订阅

来自分类Dev

使用服务总线资源管理器创建的 Azure 主题订阅规则未触发

来自分类Dev

使用Foundation,Grunt,Sass创建多个主题(css文件)

来自分类Dev

在模板的多个实例上的订阅问题

来自分类Dev

订阅的主题

来自分类Dev

创建splFileObject的多个实例

来自分类Dev

创建preparedstatement的多个实例

来自分类Dev

创建类的多个实例

Related 相关文章

热门标签

归档