接收消息功能不正常,登录功能以前是正常的,消息后不正常
来源:9-12 执行系统消息异步收发(一)
视线模糊
2023-08-05
messagetask的receive方法中的while循环,如果if(response=!null),判断为空,我个人的理解是队列中没有消息,就会报如下异常,登录功能不能正常使用
ERROR 执行异常
org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public int com.example.emos.wx.task.MessageTask.receiveAsync(java.lang.String)
测试流程如下:
1、在注册成功的情况下,message集合中有数据,user数据中正常注册了用户
user表中数据
message表中的数据
在不重启IDEA的情况下,重启小程序端,重新进入登录页面,在messagetask的receive方法中打断点,可以获得topic值,与用户表中的id值一致
单步调试执行,第一次循环,可获取topic,可建立队列
第一次循环可以获得response
第一次while循环中的if判断为true
继续单步调试,可正常插入messageref数据
插入数据如下
个人理解是注册成为超级管理员,发送了一条消息,while循环接收完第一条消息后,继续循环,没有消息接收就跳出循环,因此这个循环要执行两次,第一次循环至i++如下
继续单步执行,i++执行成功,i值变为1
继续单步执行,开始第二次循环进入response
单步执行至if判断,第二次判断为null
再次单步执行,就会进入异常
控制台就会报类型不匹配的错误Null return value from advice does not match primitive return type for: public int com.example.emos.wx.task.MessageTask.receiveAsync(java.lang.String)
1回答
-
神思者
2023-08-05
队列中没有异常消息也不会出现异常,没见过有其他同学出现过这个问题,包括我自己也没遇到过。看不到你代码是怎么写的,你先导入我的移动端和后端项目,再运行一次。如果还有这个问题,就要排查看看是不是消息队列的问题。如果我的项目没问题,就得排查是不是你代码哪里写的跟我不一致
00
相似问题