RabbitMQ中的优先级如何实现

ldfqzlk8  于 12个月前  发布在  RabbitMQ
关注(0)|答案(2)|浏览(116)

在引擎盖下,FIFO队列如何以分布式方式转变为优先级队列?他们实际上是在交换底层数据结构,还是在“破解”修复

ylamdve6

ylamdve61#

底层的数据结构是多个队列,每个队列都分配了一个优先级。每个队列都是一个Erlang VM进程。这就是为什么不建议优先级超过10个左右,因为性能会受到影响。如果您的负载足够轻,这可能是可以接受的。

gt0wga4j

gt0wga4j2#

当消息发布时带有priority头,具有较高优先级值的消息被放置在队列的头部。这是通过实际交换队列中的消息来实现的。当消息在队列中等待被使用时,这一切都将完成。为了让RabbitMQ能够对消息进行真正的优先级排序,请将消费者的basic.qos设置得尽可能低。因此,如果消费者连接到一个空队列,该队列的basic.qos未设置,并且消息随后将发布到该队列,则消息可能根本不会在队列中等待任何时间。在这种情况下,优先级队列将没有任何机会对它们进行优先级排序。
参考:https://www.rabbitmq.com/priority.html

相关问题