消息队列
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@Slf4Jpublic class SendMessage { @Autowired private原创 2020-08-06 09:14:17 · 3577 阅读 · 1 评论 -
《RabbitMQ》如何保证消息的可靠性
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。一 消息生产者没有把消息成功发送到MQ1.1 事务机制AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。自定义事务管理器@Configurationpublic class RabbitTranscation { @Bean public RabbitTransactionManager rabbitTransactionManager(Co原创 2020-08-05 08:53:07 · 454 阅读 · 0 评论 -
详解AMQP协议
...转载 2020-01-06 21:07:52 · 1053 阅读 · 0 评论