Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mqtt 订阅发布到mosquitto broker的主题数据的方法_Mqtt_Mosquitto - Fatal编程技术网

Mqtt 订阅发布到mosquitto broker的主题数据的方法

Mqtt 订阅发布到mosquitto broker的主题数据的方法,mqtt,mosquitto,Mqtt,Mosquitto,设备端mqtt将数据发布到安装在Raspberry Pi上的mosquitto代理,以创建一个主题。 如何通过两种方式从mosquitto代理订阅数据 普通的谷歌示例搜索会给我一些代码示例。但我想要的是两种方式,一种是MQTT API订阅,提供每次检查数据是否到达时都会侦听的主题,这会降低CPU性能和速度 所以,另一个问题是,如果一条消息到达了主题,那么它应该回电话说消息到达了,而不是每次我去查看主题时都会感到麻烦。第二种方法是提高CPU性能 MemoryPersistence memoryPe

设备端mqtt将数据发布到安装在Raspberry Pi上的mosquitto代理,以创建一个主题。 如何通过两种方式从mosquitto代理订阅数据

普通的谷歌示例搜索会给我一些代码示例。但我想要的是两种方式,一种是MQTT API订阅,提供每次检查数据是否到达时都会侦听的主题,这会降低CPU性能和速度

所以,另一个问题是,如果一条消息到达了主题,那么它应该回电话说消息到达了,而不是每次我去查看主题时都会感到麻烦。第二种方法是提高CPU性能

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应用程序时仍然失败。同样,这与最初的问题无关