我正在尝试从我的 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(使用前将#替换为@)