Spring ActiveMQ 整合(二.1): 重发机制概念解释

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dly1580854879/article/details/78115225

前言:

好多人问我,根据我的教程,他怎么不能实现消息重复。不是说他们不能实现消息重发,只是对MQ的这个消息重发概念有误解。

一、消息重发的解释:

下面我解释一下,我对这个概念的解读:

     ActiveMQ实现了这一功能,叫做ReDelivery(重新投递)。

    当消费者在处理消息时有异常发生,会将消息重新放回Queue里,进行下一次处       理。当超过重试次数时,消息会被放置到一个特殊的Queue中,即Dead Letter Queue,简称DLQ,用于进行后续分析。

也就是说:消息重发,是对消费者而言的,也就是重新消费,重新投递。

 

下面这是我在一个资料上看到的解释:

       在使用Message Queue的过程中,总会由于种种原因而导致消息失败。一个经典的场景是一个生成者向Queue中发消息,里面包含了一组邮件地址和邮件内容。而消费者从Queue中将消息一条条读出来,向指定邮件地址发送邮件。消费者在发送消息的过程中由于种种原因会导致失败,比如网络超时、当前邮件服务器不可用等。这样我们就希望建立一种机制,对于未发送成功的邮件再重新发送,也就是重新处理。重新处理超过一定次数还不成功,就放弃对该消息的处理,记录下来,继续对剩余消息进行处理。


二、消息重发的结果展示:(代码还是我前几篇微博里面写的那些,没有变化,我只是把一些异常输出信息给注释掉了,所以就自能看到我的目标打印文字)

  1.正常就发一次(也就是不给他重发,失败就失败)

      

    

     2.让重新发送一次(也就是在消费者投递消息失败的时候,再来一次,不管这一次结果正常与否,都不再重来)





以上就是结果。

消息重发这个概念有点误导人,都以为是生产者呢,其实是相对于消费者而言的。


猜你喜欢

转载自blog.csdn.net/dly1580854879/article/details/78115225