开始

这是我们之前处理监听消息的
image.png
之前我们是用RabbitListener注解来实现的、
image.png
现在我们把注解整个的都删掉
image.png
清空后
image.png

具体的业务类实现抽象的AbstractMessageListener
image.png

image.png
实现这个抽象方法
image.png

我们用原来方法的内容 替换到 实现的抽象方法里面按
image.png
这样我们实现了无缝切换
image.png

image.png
我们的基类是一个抽象类,这里要用extends
image.png

处理下异常
image.png
这里接收完,再发消息还是用的最原始的connection、channel做的,我们要改造一下
image.png
注入TransMessageSender
image.png
上面一个方法搞定发送
image.png
这样就一个方法就搞定
image.png
第二次收到消息
image.png
改成一个方法方法
image.png

image.png
image.png
我们不使用注解后,这里注释的代码都放开。
image.png

还是我们这个业务应用去监听
image.png
监听器我们用户的orderService继承了框架里面抽象的 AbstractMessageListener
image.png
这个抽象的MessageListener。
image.png

接收到消息后,会调用这个onMessage方法先对消息进行存库处理操作,操作完之后再
image.png
操作完成之后再调用receiveMessage方法。
image.png
这个方法在抽象类里面是个抽象方法,是由我们的业务应用去实现。由我们的业务应用去实现的、
image.png

ctrl+alt+b
image.png
就跳到了我们的业务应用里面
image.png
处理完之后又回到我们的框架,处理善后的处理。
image.png
以上就是我们接收消息的架构逻辑。

配置都放开了注释,如果里面还有新建ConnectionFactory,新建RabbitAdmin的话、ContainerListener这种的可以去掉。
image.png

运行测试

image.png

测试消息的处理流程是否正常。
回发一个消息。
image.png

切换到业务。把转移去掉斜线。
image.png

image.png

下一步再发送给骑手微服务,骑手服务没有,所以找不到路由
image.png
我们只需要管前面这块逻辑
image.png

异常的测试

故意把是否确认设置null
image.png

image.png
后面消费次数增加,消费的越来越慢。它是2的次幂次方
image.png
第五次之后,消息就成了死信了
image.png

结束