网页制作与网站建设实战大全光盘,在线设计平台代理加盟,山西cms建站系统价格,长沙近期大型招聘会MQ之保证消息的可靠性
1.消费端消息可靠性保证#xff1a;
1.1 消息确认#xff08;Acknowledgements#xff09;#xff1a;
消费者在接收到消息后#xff0c;默认情况下RabbitMQ会自动确认消息#xff08;autoAcktrue#xff09;。为保证消息可靠性#xff0c;可以…MQ之保证消息的可靠性
1.消费端消息可靠性保证
1.1 消息确认Acknowledgements
消费者在接收到消息后默认情况下RabbitMQ会自动确认消息autoAcktrue。为保证消息可靠性可以设置autoAckfalse使得消费者在处理完消息后手动发送确认basicAck。如果消费者在处理过程中发生异常或者未完成处理就终止运行那么消息在超时时间内将不会被删除会再次被RabbitMQ投递给其他消费者。
1.2 死信队列Dead Letter Queue
当消息不能被正常消费时比如达到最大重试次数可以通过设置TTLTime To Live或者死信交换器Dead Letter Exchange将消息路由至死信队列从而有机会后续分析和处理这些无法正常消费的消息。
2.生产端消息可靠性保证
2.1 消息持久化
当生产者发布消息时,可以选择将其标记为持久化persistent).这意味着即使 RabbitMQ 服务器重启消息也不会丢失因为它们会被存储在磁盘上。
2.2 确认Confirm机制
开启confirm回调模式后RabbitMQ会在消息成功写入到磁盘并至少被一个交换器接受后向生产者发送一个确认acknowledgement。若消息丢失或无法投递给任何队列RabbitMQ将会发送一个否定确认nack). 生产者可以根据这些确认信号判断消息是否成功送达并采取相应的重试策略。 RabbitMQ作为消息中间件并启用publisher confirms发布者确认与publisher returns发布者退回机制时可以确保消息从生产者到交换机的投递过程得到更准确的状态反馈。