Mqtt 订阅发布到mosquitto broker的主题数据的方法
设备端mqtt将数据发布到安装在Raspberry Pi上的mosquitto代理,以创建一个主题。 如何通过两种方式从mosquitto代理订阅数据 普通的谷歌示例搜索会给我一些代码示例。但我想要的是两种方式,一种是MQTT API订阅,提供每次检查数据是否到达时都会侦听的主题,这会降低CPU性能和速度 所以,另一个问题是,如果一条消息到达了主题,那么它应该回电话说消息到达了,而不是每次我去查看主题时都会感到麻烦。第二种方法是提高CPU性能Mqtt 订阅发布到mosquitto broker的主题数据的方法,mqtt,mosquitto,Mqtt,Mosquitto,设备端mqtt将数据发布到安装在Raspberry Pi上的mosquitto代理,以创建一个主题。 如何通过两种方式从mosquitto代理订阅数据 普通的谷歌示例搜索会给我一些代码示例。但我想要的是两种方式,一种是MQTT API订阅,提供每次检查数据是否到达时都会侦听的主题,这会降低CPU性能和速度 所以,另一个问题是,如果一条消息到达了主题,那么它应该回电话说消息到达了,而不是每次我去查看主题时都会感到麻烦。第二种方法是提高CPU性能 MemoryPersistence memoryPe
MemoryPersistence memoryPersistence = new MemoryPersistence();
MqttConnectOptions conOpt = new MqttConnectOptions();
conOpt.setUserName("mqttuser");
conOpt.setPassword(new String("mqttpassword").toCharArray());
conOpt.setCleanSession(true);
try {
MqttAsyncClient mqttAsyncClient = new MqttAsyncClient("tcp://localhost:1883", "1883", memoryPersistence);
mqttAsyncClient.setCallback(new MqttConnectionCallback());
if (!mqttAsyncClient.isConnected()) {
IMqttToken token = mqttAsyncClient.connect(conOpt);
logger.info();
System.out.println("Connected");
}
} catch (MqttException e) {
e.printStackTrace();
System.out.println("Unable to set up client: "+e.toString());
System.exit(1);
}
这是我的侦听器类重写方法
@Override
public void messageArrived(String topic, MqttMessage msgData) throws Exception {
String time = new Timestamp(System.currentTimeMillis()).toString();
System.out.println("Time:\t" +time +
" Topic:\t" + topic +
" Message:\t" + new String(msgData.getPayload()) +
" QoS:\t" + msgData.getQos());
}
需要从编码方面了解如何以异步方式实现这一点。
如果我的理解有误,请更正,特别是关于侦听器如何在topicname上侦听以及绑定是如何完成的。您需要在
mqttAsyncClient
对象上使用subscribe()
方法(连接完成后)
您可以多次调用此选项以订阅多个主题
消息将被传递到
messageArrived()
回调,您可以使用topic
参数来确定消息从哪个订阅到达。在Rpi cmd提示符“mosquitto_pub-d-h 127.0.0.1-p 1883-t'/mqtt/topic/sens'-u username-p password-m”消息测试中!!!“输出我发送连接、接收连接、发送发布(…11字节)、发送断开连接。这与您提出的问题无关。(主题也不应以/
开头)hardillb,当我使用凭据从命令提示符下订阅时,我能够接收数据。但是在订阅SpringBoot应用程序时仍然失败。同样,这与最初的问题无关