ServiceStack的RabbitMQ服务器中的优先级队列的目的是什么?



我正在使用ServiceStack与Rabbit MQ服务器,并发现通过ServiceController处理的服务消息。ExecuteMessage处理程序由两个线程处理,即使"noOfThreads = 1"下面是我注册处理程序的方式:

container.Register<IMessageService>(c => new RabbitMqServer());
var mqServer = (RabbitMqServer)container.Resolve<IMessageService>();
mqServer.RegisterHandler<CallBatchMessage>(ServiceController.ExecuteMessage, noOfThreads: 1);

我在文档中找到了以下关于优先队列的信息:

"启动MQ服务器为每个处理程序生成2个线程,其中一个用于侦听Message Inbox MQ:Hello。inq和另一个监听位于mq的优先队列:Hello.priorityq.

注意:您可以将mqServer中启用优先队列的消息列入白名单。PriortyQueuesWhitelist或通过设置mqServer禁用它们。DisablePriorityQueues = true."

我希望只有一个线程来处理队列,所以我使用了"mqServer。DisablePriorityQueues = true"这招奏效了。现在我很好奇,优先队列的目的是什么?

这不是人们期望的一个正常的优先级队列。

ServiceStack优先级队列只是另一个队列的另一个工作线程。

即使正常队列收到太多消息而阻塞,它也会得到很好的处理。

你应该只把一些重要的消息放到高优先级队列。

如果您在高优先级队列中放置太多消息,那么它将比低优先级队列慢。

最新更新