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

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

生产者(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

首先,每个队列都被mqtt-plugin自动绑定到amq.topic交换.

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

因此,生产者必须将消息发布到“amq.topic”交换,并且“amq.topic ..”路由密钥,并且接收者必须订阅“amq.topic ..”routing-key.

相关文章
相关标签/搜索