2. RabbitMQ应用问题

2.1 消息可靠性保障

提出需求:如何能够保证消息的 100% 发送成功?

首先大家要明确任何一个系统都不能保证消息的 100% 投递成功,我们是可以保证消息以最高最可靠的发送给目标方。

在RabbitMQ中采用 消息补充机制 来保证消息的可靠性
09 RabbitMQ应用问题

步骤分析:

参与部分:消息生产者、消息消费者、数据库、三个队列(Q1、Q2、Q3)、交换机、回调检查服务、定时检查服务

  1. 消息的生产者将业务数据存到数据库中
  2. 发送消息给 队列Q1
  3. 消息的生产者等待一定的时间后,在发送一个延迟消息给队列 Q3
  4. 消息的消费方监听 Q1 队列消息,成功接收后
  5. 消息的消费方会 发送 一条确认消息给 队列Q2
  6. 回调检查服务监听 队列Q2 发送的确认消息
  7. 回调检查服务接收到确认消息后,将消息写入到 消息的数据库表中
  8. 回调检查服务同时也会监听 队列Q3延迟消息, 如果接收到消息会和数据库比对消息的唯一标识
  9. 如果发现没有接收到确认消息,那么回调检查服务就会远程调用 消息生产者,重新发送消息
  10. 重新执行 2-7 步骤,保证消息的可靠性传输
  11. 如果发送消息和延迟消息都出现异常,定时检查服务会监控 消息库中的消息数据,如果发现不一致的消息然后远程调用消息的生产者重新发送消息。

2.2 消息幂等性处理

幂等性指一次和多次请求某一个资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

在MQ中指,消费多条相同的消息,得到与消费该消息一次相同的结果。

在本教程中使用 乐观锁机制 保证消息的幂等操作

果。

在本教程中使用 乐观锁机制 保证消息的幂等操作

09 RabbitMQ应用问题

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-11-17
  • 2021-11-26
  • 2021-06-10
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-13
  • 2021-07-27
  • 2021-08-16
  • 2021-08-04
  • 2021-09-26
  • 2021-08-13
  • 2021-09-01
相关资源
相似解决方案