如何使用 MQTT Paho 在 RabbitMQ 队列中订阅

2024-01-30

我正在尝试从我的 Android 应用程序连接到一个名为“消息”的队列。

生产者(AMQP 协议下的一种 Web 服务)已连接,可以通过 RabbitMQ 管理面板进行检查。

为了从我的 Android 设备进行连接,我正在这样编码。

private void connect() throws Exception {

    this.sampleClient = new MqttClient(this.broker, this.clientId);

    MqttConnectOptions connOpts = new MqttConnectOptions();
    connOpts.setUserName("user");
    connOpts.setPassword("user".toCharArray());
    /*connOpts.setConnectionTimeout(60 * 10);
    connOpts.setKeepAliveInterval(60 * 5);*/
    connOpts.setCleanSession(true);

    this.sampleClient.connect(connOpts);

    this.sampleClient.setCallback(this);

    this.sampleClient.subscribe("messages");

    if(!this.sampleClient.isConnected()){

        System.out.println("Not Connected");
        return;
    }

    System.out.println("Connected");
}

我尝试过“amq.topic”、“amq.topic.*”、“amq.topic.messages”等...但是当我查看 RabbitMQ 队列部分时,“messages”有 0 个消费者,并且已经自动设置一个名为“mqtt-subscription-Sampleqos1”的新队列。

发生了什么?如何订阅“消息”队列?


这个问题有两点很重要。

根据 RabbitMQ MQTT 文档:http://www.rabbitmq.com/mqtt.html http://www.rabbitmq.com/mqtt.html

首先,每个队列都会自动绑定到amq.topic通过 mqtt-plugin 进行交换。

其次,每个订阅者都有自己的队列,如下所示,mqtt-订阅-{client_id}{qosX}(其中 X 是订阅的 QoS 级别)

因此,生产者必须将消息发布到“amq.topic”交换器和“amq.topic..”路由密钥,接收者必须订阅“amq.topic..”路由密钥。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 MQTT Paho 在 RabbitMQ 队列中订阅 的相关文章

随机推荐