
下面我们研究MQ的延迟性问题
(1)初始死信交换机



死信交换机作用一方面可以向Public的异常交换机一样做异常消息的兜底方案,另一方面,可以处理一些超时消息,功能比较丰富一点
(2)TTL
上面学习死信有三种情况,第一是消息处理的时候失败了,最终被拒绝了,不想入队,就变成了死信了,死信交换机可以做一种兜底的方案,第二种消息超时没有被消费,结果过期了,变成了死信,这个呢跟延迟消息有关系,下面我们来学习超时机制TTL




在消费者里添加代码:



发送者:



消费者日志:

他们是时间差正好10s
上面是给队列设置的延迟时间,也可以给消息设置延迟时间。




延迟5s,以较准的为准


(3)延迟队列
上面通过TTL和死信交换机实现了延迟消息的效果,实现起来比较麻烦,需要经过好几个交换机和队列,配置比较复杂。下面我们会使用一种延迟队列的插件,来实现延迟消息



 
 
这个插件属于MQ中的拓展功能,需要找到MQ的插件目录,才能安装










在消费者中:


消息发送者:


 
 
这里报错了,因为我们编写了ReturnCllback,失败会被认为是延迟消息,会被重发,是不合理的,它本身没有失败,只是被延迟了这种类型的消息,不用重发,我们需要加个判断

添加代码判断:

加了代码之后就只有成功的消息没有失败的




















![[VulnHub靶机渗透] WestWild 1.1](https://img-blog.csdnimg.cn/direct/7a7bc257524d4cd6aa5a5aebbf23b393.png)

