向多个MQTT服务器订阅主题问题
项目需求要向两个MQTT服务器订阅主题,分别编写了两个接收主题的方法
向A服务器订阅方法
int aMsgArrvd(void * context, char * topic,int topicLen,MQTTClient_message * message1){
//处理消息
MQTTClient_freeMessage(&message1);
MQTTClient_free(topic);
return 1;
}
向服务器B订阅方法
int bMsgArrvd(void * context, char * topic,int topicLen,MQTTClient_message * message2){
//处理消息
MQTTClient_freeMessage(&message2);
MQTTClient_free(topic);
return 1;
}
服务器A的数据频率比较高,服务器B的数据频率比较低,接收到服务器B的消息时,会造成程序异常退出。当把 bMsgArrvd函数中的MQTTClient_freeMessage(&message);注释掉后,程序不会异常退出,但是B服务器会一直在处理消息,无论有没有消息。
打印了一下message的地址,现个方法中message的地址会错乱,也就是说aMsgArrvd可能会打印出message1和message2的地址,同样bMsgArrvd也有可能打印出message1和message2的地址
环境:MQTT服务器:mosquitto mqtt库:libpaho-mqtt,开发语言:C
请问:一个应用程序能不能向多个MQTT服务器订阅消息,如果能,我现在的问题该如何解决。
向A服务器订阅方法
int aMsgArrvd(void * context, char * topic,int topicLen,MQTTClient_message * message1){
//处理消息
MQTTClient_freeMessage(&message1);
MQTTClient_free(topic);
return 1;
}
向服务器B订阅方法
int bMsgArrvd(void * context, char * topic,int topicLen,MQTTClient_message * message2){
//处理消息
MQTTClient_freeMessage(&message2);
MQTTClient_free(topic);
return 1;
}
服务器A的数据频率比较高,服务器B的数据频率比较低,接收到服务器B的消息时,会造成程序异常退出。当把 bMsgArrvd函数中的MQTTClient_freeMessage(&message);注释掉后,程序不会异常退出,但是B服务器会一直在处理消息,无论有没有消息。
打印了一下message的地址,现个方法中message的地址会错乱,也就是说aMsgArrvd可能会打印出message1和message2的地址,同样bMsgArrvd也有可能打印出message1和message2的地址
环境:MQTT服务器:mosquitto mqtt库:libpaho-mqtt,开发语言:C
请问:一个应用程序能不能向多个MQTT服务器订阅消息,如果能,我现在的问题该如何解决。
...全文
相关推荐
前端页面使用MQTT协议(1883端口)完成消息发布与订阅.docx
前端页面使用MQTT协议(1883端口)完成消息发布与订阅
vb.net下的MQTT服务器、客户端
vb.net下的MQTT服务器、客户端,包含启动与关闭服务、连接与断开连接、发布与订阅等全部功能,对于用vb.net开发MQTT相关功能的需求有很大的帮助
chrome测试mqtt插件MqttLens
chrome测试mqtt插件MqttLens 可搜索 MQTT再学习 -- 搭建MQTT服务器及测试
Mqtt测试工具
windows平台的Mqtt测试工具,有服务器端和客户端,需要.net 4.5以上可以支持。可以做简单的测试
MQTT、MQTT客户端、MQTT客户端调试软件、MQTT客户端测试工具 MQTT调试工具
MQTT调试工具,用于MQTT协议联调联试,使用方便,画面简洁清晰,需要键入地址及端口号,ID/用户名及密码后连接,能够用来进行十六进制显示和ASCII显示,可以订阅MQTT topic!


