NOTE

3.2 RabbitMQ消息的可靠性

1. 三种情况 1.1. 生产者 消息没传到mq丢失了,或者到了mq但是mq出问题了没保存消息 1.2. MQ mq把消息暂存在内存中,还未写入磁盘,挂了 1.3. 消费者 消费了这条消息,但是没有处理成功就挂了 2. 解决 2.1. 生产者 2.1.1. 开启事务 开始事务后生产者会同步阻塞直到m

Message Queue更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 三种情况

1.1. 生产者

消息没传到mq丢失了,或者到了mq但是mq出问题了没保存消息

1.2. MQ

mq把消息暂存在内存中,还未写入磁盘,挂了

1.3. 消费者

消费了这条消息,但是没有处理成功就挂了

2. 解决

2.1. 生产者

2.1.1. 开启事务

开始事务后生产者会同步阻塞直到mq返回成功还是失败

  • 缺点 导致mq吞吐量下降,一般不使用

2.1.2. 确认机制

将channel配置成confirm模式,发送完后生产者就不管了,mq会异步回调生产者的接口 当消息成功发送到mq的时候,会回调生产者的成功接口【ack】 当消息发送失败的时候,会回调生产者的失败接口【nack】,这里可以重新发送消息

2.2. MQ

  • 创建queue的时候设置为持久化 这里会持久化mq的元数据
  • 发送消息的时候设置deliveryMode为2 这里会持久化mq的数据

2.3. 消费者

  • 关闭自动ack,使用手动ack
正在加载有帮助数量