错误报告
环境
- EMQX 版本: 5.0.16
- java mqtt客户端:org.eclipse.paho.client.mqttv3:1.2.5
共享主题如下图
- 过程描述
使用mqttX向 topic:Client/863005061108358/110 发送消息
并且MQTTX也订阅了共享主题 可以收到消息
**
- 但是 java客户端收不到共享主题的消息
**
共享主题如下图
**
共享订阅就是多个客户端同时消费同一个主题下的消息,只有其中一个可以接收到 PUB 端发出来的消息。
你现在观察到的现象应该是共享订阅消息一直被发给 mqttx 的那个订阅者了,java 客户端没有被投递过共享订阅消息。试试更改一下共享订阅策略,或者让 mqttx 的共享订阅者下线再试验一下。
这里是相关文档:共享订阅机制介绍
可以提供下有相关的日志还有环境信息么,例如你的 java 客户端输出的日志,以及 EMQX 的日志。
另外可以抓包看一下。
我这边用 v5.0.16 或最新的 v5.0.20 ,客户端使用 MQTTX 1.9.1 snap 版,都没能复现出来你所描述的问题。
我用MQTTX 订阅共享主题也是可以收到消息的,就是用Java客户端收不到。
我把java客户端的源码给你把(其中有一些将消息发送到mq的代码可以去掉)
https://www.zgfcdl.net/temp2/MqttConfig.java
https://www.zgfcdl.net/temp2/TBDMqttService.java
你可以链接我的EMQX(没有校验用户名密码)
tcp://106.14.197.252:1883
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
java源文件
https://yzm-pub.oss-cn-shanghai.aliyuncs.com/temp2/TBDMqttService.java
https://yzm-pub.oss-cn-shanghai.aliyuncs.com/temp2/MqttConfig.java
我试试
我使用日志追踪“
这是我订阅了 Client/+/110所产生的日志。
我的Java客户端订阅了 $share/g/Client/+/110主题
日志中没有显示往java客户端发送消息
是否可以加个qq? 我的qq 786004470
2023-03-16T13:35:07+08:00 [PUBLISH] mqttx_cece6143@218.93.48.30:49745 msg: publish_to, topic: Client/123/110, payload: {
"msg": "hello"
}
2023-03-16T13:35:55+08:00 [SUBSCRIBE] mqttx_cece6143@218.93.48.30:49745 msg: subscribe, sub_id: mqttx_cece6143, sub_opts: [nl: 0, qos: 0, rap: 0, rh: 0, share: h, sub_props: []], topic: Client/+/110
2023-03-16T13:36:01+08:00 [PUBLISH] mqttx_cece6143@218.93.48.30:49745 msg: publish_to, topic: Client/123/110, payload: {
"msg": "hello"
}
2023-03-16T13:37:26+08:00 [UNSUBSCRIBE] mqttx_cece6143@218.93.48.30:49745 msg: unsubscribe, sub_opts: [nl: 0, qos: 0, rap: 0, rh: 0, share: h, sub_props: [], subid: mqttx_cece6143], topic: Client/+/110
2023-03-16T13:37:29+08:00 [PUBLISH] mqttx_cece6143@218.93.48.30:49745 msg: publish_to, topic: Client/123/110, payload: {
"msg": "hello"
}
2023-03-16T13:37:54+08:00 [PUBLISH] mqttx_cece6143@218.93.48.30:49745 msg: publish_to, topic: Client/123/110, payload: {
"msg": "hello"
}
这个问题后面解决了吗 咋解决的
请问你们解决了么?我们遇到的问题是自定义的监听器无法监听共享订阅的topic,都被callback捕获了。