RabbitMq学习笔记三、确认消费机制

一、目的

消息发送成功 ==》 Publisher 的Confirm 机制

消息不丢失 和 被确认消费 ==》 主要是面向消费者的确认消费而言的

 

1、是否发送成功 交换机、路由和队列绑定构成的模型不存在时

1)设置发送消息成功时反馈回信息 connectionFactory.setPublisherReturns(true)。

2) 设置消息发送确认机制 rabbitTempate.SetConfirmCallback()

 

2、RabbitMq 服务出现宕机

在创建队列、交换机时设置其持久化参数为true 即durable 参数的取值为true

创建消息时设置消息的持久化模式为"持久化",从而保证RabbitMq服务器出现奔溃并执行重启操作之后,队列、交换机仍旧存在而且消息不会丢失。

MessageBuilder.withBody(message).setDeliveryMode(MessageDeliveryMode.PERSISTENT).build();

 

3、消费者在监听消费处理消息、出现监听失败或者直接奔溃 ==》导致消息所在的队列找不到对应的消息而不断的重新入队列,最终出现消息被重复消费

消息确认机制 ACK 模式 :

1)无须确认(NONE): APP应用更新通知

2)自动确认(AUTO) : 消费者监听到消息时,需要发送一个 "AUTO ACK" 的反馈信息给RabbitMQ 服务器,之后将在RabbitMQ 队列中被移除。底层实现原理是:由RabbitMq 内置的相关组件实现自动发送确认反馈信息

3)手动确认(MANUAL): 生产者将消息发送值队列,消费者在监听到消息的时需要手动的 "以代码的形式" 发送一个ACK 的反馈信息给RabbitMq服务器,之后该消息将在RabbitaMQ的队列中被移除,同时告知生产者,消息已经成功发送并且已经成功被消费者监听消费了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章