2 消息分发机制

未匹配的标注

2.1 轮询分发

Round-robin dispatch(默认机制),即按均分配,并且是一次性分配,不是一个消息一个消息分配。

示例:假设 Producer 向 Queue 投递了 10 条消息:1、2、3、4、5、6、7、8、9、10。

  • 如果此时 Consumer-1、Consumer-2 都已经绑定了 Queue,那么 Consumer-1 获得消息:1、3、5、7、9,Consumer-2 获得消息:2、4、6、8、10。不管谁先处理完,都是 5 条。
  • 如果 Consumer-1 绑定了 Queue,而 Consumer-2 在 Producer 投递完消息后才绑定 Queue,那么就算 Consumer-1 没有 ack 完 10 条消息,Consumer-2 也不会获得任何消息。

2.2 公平分发

Fair dispatch,即按劳分配。根据 Consumer 处理消息的能力分发,处理快的多处理,处理慢的少处理。

示例:假设 Consumer-1 处理消息需要 10s,Consumer-2 处理消息需要 3s,此时 Producer 向 Queue 投递了 10 条消息:1、2、3、4、5、6、7、8、9、10。结果为:Consumer-1 获得消息 1、6、10,Consumer-2 获得消息 2、3、4、5、7、8、9。

# example
$channel = $connection->channel();
$channel->basic_qos(0, 1, false);

如果文章有帮到你的话,别忘了点赞收藏噢 :smile:

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~