RabbitMQ小记(二)——公平调度vs循环调度

公平调度 vs 轮询调度

默认情况下,RabbitMQ将按顺序将每个消息发送给下一个使用者。平均每个消费者将获得相同数量的消息。这种分发消息的方式称为循环。在这种模式下,调度不一定像我们希望的那样工作。例如,在两个工人(消费者)的情况下,当信息很多或很少,会出现一个工人将不断忙碌,另一个将几乎不做任何工作的情况。RabbitMQ 对此一无所知,仍然会均匀地分发消息。这是因为RabbitMQ 只是在消息进入队列时才分派消息。它不查看用户未确认的消息的数量。它只是盲目地将每个第 n 条消息分派给第 n 个消费者。
然而,“公平调度”是 Spring AMQP 的默认配置。SimpleMessageListenerContainerDEFAULT_PREFETCH_COUNT 的值定义为250。如果 DEFAULT_PREFETCH_COUNT 设置为0,则如上所述轮询传递。
在这里插入图片描述
但是,在默认情况下将 prefetchCount 设置为250时,这告诉 RabbitMQ 不要向工人一次性发送超过250条消息。或者,换句话说,当未打包的消息数量为250时,不要将新消息发送给工人。相反,它将把它发送给下一个不太忙的工人。

关于队列大小的注意事项
如果所有的工人(消费者)都很忙,你的队伍可能会排满。你需要关注这个问题,也许需要增加更多的工人,或者有其他的策略。

通过使用Spring AMQP,您可以为消息确认和公平调度配置合理的值。Spring AMQP提供的队列的默认持久性和消息的持久性允许消息在RabbitMQ重启时仍然存在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值