开始

实现定时任务

这里我们只写了一个骨架
image.png隔一段时间调用这个方法,把数据库内应发未发的消息取出来。重新再发一遍,然后更新所有的消息重发的次数。
下面来实现这个方法
取出所有数据。应发未发的。
image.png
循环应发未发的消息,进行处理。判断的重发的次数有没有达到限制。
image.png
设置为死信,并继续循环。
image.png
消息重发的逻辑。直接把这段复制过来。
image.png
上面注入RabbitTemplate
image.png

image.png

orderService

注入。
image.png
注释上面的发送,用我们刚才写的发送
image.png
上面几个也用不到 注释掉
image.png

现在的逻辑就是启动后会发消息到restaurant队列里面。但是restaurant服务没有启动,所以消息会停留在restaurant队列里面。
image.png

启动orderService做测试

image.png

image.png
重复发送 最多5次。
image.png
为了调试方便设置5秒重发一次
image.png

无效绑定的语句。
image.png
不加上这个就不知道找mapper这个注解。
image.png

image.png

postman发一个订单请求过来测试
image.png

image.png
打开数据库的表,没有应发 未发的消息。
image.png
没有send的字段。
image.png
清空表内之前的测试数据
image.png

测试找不到交换机或者队列。

直接把这个交换机删掉
image.png

image.png

在发送一条、消息。

image.png

image.png
消息重发了四次
image.png

刷新
image.png

超过5次被设置为死信
image.png

模拟目标队列不存在

image.png

image.png

结束