rabbitmq如何保证消息的可靠性传输(简述版本)?

我需要从三点去考虑,

  • 生产者弄丢了数据,生产者将消息发送的Exchange并且路由到队列
  • 队列需要将消息给它持久化
  • 消费者要成功消费队列中的消息

针对生产者:

RabbitMQ提供了confirm机制,保证了消息消息发送的Exchange交换机,那么还提供了return机制,可以保证消息从exchange路由到队列中,如果发送失败或者是路由失败时它会提供一个回调函数,可以做重试或者是一些补偿机制,

针对队列做持久化

只需要在发送消息之前,给消息BasicProperties 中的 deliveryMode 属性设置为 2,那么这样呢,即便RabbitMQ重启消息也不会丢失

针对消费者

他需要开启手动ack,在消息被成功消费后呢,需要手动的基于channel执行a ck,那保证消息是可以被正常消费。

猜你喜欢

转载自blog.csdn.net/weixin_43811057/article/details/131652947