采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师你好,Callback类实现了MqttCallback接口,在连接时执行了: //设置回调类 client.setCallback(new Callback()); 但在执行测试用例testPahoPub发送消息时,Callback类中messageArrived方法没有执行,而deliveryComplete方法有执行,这是为什么?
同学你好,messageArrived方法是接收订阅主题推送的消息触发的方法,deliveryComplete方法是发送消息成功触发的方法,执行测试用例testPahoPub发送消息,是触发了Callback类中deliveryComplete方法,所以deliveryComplete方法有执行,messageArrived方法没有执行,如果是接收了订阅主题推送的消息,那么messageArrived方法才会执行
老师,在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方法还是没有执行,请帮忙看一下?
课程中Callback这个类,是实现了MqttCallback接口,以及MessageListener这个类,是实现了IMqttMessageListener接口,这两个类,都有共同的方法messageArrived(),就是接收到订阅主题的推送消息,会触发messageArrived()。那么是触发Callback这个类的messageArrived(),还是触发MessageListener这个类的messageArrived(),因为同一个项目同时存在Callback这个类,和MessageListener这个类,MessageListener这个类的优先级比,Callback这个类高,所以触发了MessageListener这个类的messageArrived(),所以日志打印了“ >>>>>监听器收到订阅主题的消息:topic=io_test,message=hello MQTT”,而没有执行Callback这个类的messageArrived()
登录后可查看更多问答,登录/注册
新能源行业已经成为 Java 工程师寻求职业突破的黄金新赛道
52 3
63 3
39 3
66 3
29 2
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号