错误类型:org.springframework.amqp.rabbit.support.ListenerExecutionFailedException

在做一个医院挂号系统时,需要用rabbitMQ处理用户的订单消息。然后就出现了刷屏,网上找了一些方法,都没法解决。研究了一段时间,解决了。下面是我的解决办法:

首先我的错误出现的原因是消息接受器无法处理队列中的消息,导致队列中消息无法被消费,接收器又一直去消费,陷入了死循环,导致了刷屏。网上的一些是发送和接受的消息类型不一致,比如发送String,接受int,可能也会导致刷屏。
在这里插入图片描述
根据我的代码,错误是出现在一个查询数据库的地方下面展示我的代码,展示了大概的逻辑:
发送

System.out.println("正在将消息放入队列中...");
rabbitService.sendMessage(MqConst.EXCHANGE_DIRECT_ORDER, MqConst.ROUTING_ORDER, orderMqVo);
System.out.println("消息放入成功");

接收
在这里插入图片描述
上图蓝色处出现了查询异常,大致错误是MongoRepository默认查询方法和需要返回的对象不一致。问题出在Optional.get()方法,自定义查询方法替代后,流程就通了。接收器也能处理消息了。具体业务代码略,至此问题解决了!

长个教训,也希望能对其他人有所帮助。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐