一,前言

 

之前我们演示了,如何通过rabbitmq实现消息队列的,而且是一个生产者对应一个消费者,那我现在想一个生产者对应多个消费者,又会有什么样的情况发生呢?

 二、逻辑图

 RabbitMQ消息分发轮询

说明:no_ack 意思是 no acknowlargement 不确定的意思,如果这个no_ack=True 表示你服务器不care也不关心这个消息是否处理完了,但是如果你关系的话,我们就不加。一般情况下,我们是不加的,rabbitmq 默认就是说消息处理完了,自动确认。

 RabbitMQ消息分发轮询

 就是说如果添加no_ack=True ,生产者默认处理完,不在发送消息。

2.2、处理过程中down机

只要把这个no_ack=True注释掉,就能保证消息被完整的处理。它存在RabbitMQ的sever的那个队列里面。

三、总结

 

  1.  一个生产者对应多个消费者,生产者发送多次消息,是采用轮询的机制,公平的分给每一个消费者。
  2. 消费者代码中no_ack=True,一般情况下是不加的,保证了连接断开,消息就会转给下一个消费者。
  3. RabbitMQ判断如果socket断了,就知道连接断了,消息就会转给下一个消费者。
  4. 消费者的启动顺序,代表着是第几个消费者。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-24
  • 2022-12-23
  • 2021-09-19
  • 2021-07-12
  • 2022-12-23
  • 2021-12-06
猜你喜欢
  • 2021-08-30
  • 2021-11-09
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
相关资源
相似解决方案