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

 耗子很傻爱钻洞 发布于 2022-12-08 19:01

我正在尝试从我的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"的新队列.

发生了什么?我怎么能挂起"消息"队列?

1 个回答
  • 关于这个问题有两点重要.

    根据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.

    2022-12-11 02:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有