请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Callback类中messageArrived方法的日志为什么没有输出?

老师你好,Callback类实现了MqttCallback接口,在连接时执行了:
//设置回调类
client.setCallback(new Callback());
但在执行测试用例testPahoPub发送消息时,Callback类中messageArrived方法没有执行,而deliveryComplete方法有执行,这是为什么?

正在回答 回答被采纳积分+3

插入代码

1回答

小简同学 2025-03-18 13:06:02

同学你好,messageArrived方法是接收订阅主题推送的消息触发的方法,deliveryComplete方法是发送消息成功触发的方法,执行测试用例testPahoPub发送消息,是触发了Callback类中deliveryComplete方法,所以deliveryComplete方法有执行,messageArrived方法没有执行,如果是接收了订阅主题推送的消息,那么messageArrived方法才会执行

0 回复 有任何疑惑可以回复我~
  • 提问者 GalenZhang #1
    老师,在MqttPahoCtl类中的pahoPub方法,如果代码修改成:
    clientService.subScribe(topic);
    clientService.publish(topic,message);
    clientService.disconnct();
    先订阅主题,再发送消息,在执行测试用例testPahoPub发送消息时,输出的日志如下:
    [INFO] >>>>>paho模式 mqtt订阅主题成功 <<<<<
    [INFO] >>>>>paho模式 mqtt发送消息成功 <<<<<
    [INFO] >>>>>消息发送是否成功:true
    [INFO] >>>>>监听器收到订阅主题的消息:topic=io_test,message=hello MQTT
    [INFO] >>>>>paho模式 mqtt断开连接 <<<<<
    
    Callback类中messageArrived方法还是没有执行,请帮忙看一下?
    回复 有任何疑惑可以回复我~ 2025-03-18 21:27:02
  • 小简同学 回复 提问者 GalenZhang #2
    课程中Callback这个类,是实现了MqttCallback接口,以及MessageListener这个类,是实现了IMqttMessageListener接口,这两个类,都有共同的方法messageArrived(),就是接收到订阅主题的推送消息,会触发messageArrived()。那么是触发Callback这个类的messageArrived(),还是触发MessageListener这个类的messageArrived(),因为同一个项目同时存在Callback这个类,和MessageListener这个类,MessageListener这个类的优先级比,Callback这个类高,所以触发了MessageListener这个类的messageArrived(),所以日志打印了“ >>>>>监听器收到订阅主题的消息:topic=io_test,message=hello MQTT”,而没有执行Callback这个类的messageArrived()
    回复 有任何疑惑可以回复我~ 2025-03-19 16:25:14
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号