![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
Java旅途
这个作者很懒,什么都没留下…
展开
-
《RabbitMQ》什么是死信队列
一 什么是死信队列 当一条消息在队列中出现以下三种情况的时候,该消息就会变成一条死信。 消息被拒绝(basic.reject / basic.nack),并且requeue = false 消息TTL过期 队列达到最大长度 当消息在一个队列中变成一个死信之后,如果配置了死信队列,它将被重新publish到死信交换机,死信交换机将死信投递到一个队列上,这个队列就是死信队列。 二 实现死信队列 2.1 原理图 2.2 创建消费者 创建一个消费者,绑定消费队列及死信交换机,交换机默认为direct模型,死信原创 2020-08-07 08:57:04 · 8897 阅读 · 0 评论 -
《RabbitMQ》如何保证消息不被重复消费
一 重复消息 为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。 1.1 生产时消息重复 由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。 生产者中如果消息未被确认,或确认失败,我们可以使用定时任务+(redis/db)来进行消息重试。 @Component @Slf4J public class SendMessage { @Autowired private原创 2020-08-06 09:14:17 · 3577 阅读 · 1 评论 -
《RabbitMQ》如何保证消息的可靠性
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。 自定义事务管理器 @Configuration public class RabbitTranscation { @Bean public RabbitTransactionManager rabbitTransactionManager(Co原创 2020-08-05 08:53:07 · 454 阅读 · 0 评论