RabbitMQ 2队列

问题描述 投票:0回答:1

看到类似的问题,但预期答案不同。我的问题是,我是否可以创建一个消费者以将注意力集中在单个队列上,直到清空后再切换到另一个队列,直到将新工作发送到他们的主队列?

例如:1个队列包含要在较长时间范围内处理的大量工作,以及它自己的专用使用者(例如3个)。第二个队列接收的工作量更少,所需的处理更少。如果第二个队列的使用者完成了工作,我可以这样做,以便他们切换到第一个队列,直到他们的队列得到更多工作为止。]

rabbitmq message-queue priority-queue
1个回答
0
投票

我认为对于这个问题,重要的是要记住,规范意义上的“消费者”与RabbitMQ意义上的“消费者”之间存在区别。

RabbitMQ使用者是该协议的一项发明-基本上,它是指通道/连接希望在指定的使用者标签下向其推送消息。从这个意义上讲,这只是通知经纪人立即发送消息。

从规范的意义上讲,消息使用者是处理消息的任何代码。

因此,您的问题的答案是“是的,继续编写程序以执行此操作。”您可以控制规范的消费者代码。由您的软件决定如何处理来自队列的消息。

现在,如果您想知道RabbitMQ是否可以将使用者重新订阅到另一个队列,答案是“那不是它的工作方式。”在RabbitMQ中,使用者只是对订阅队列请求的响应-它是一个“消费者标签”对象。订阅的持续性质与通道/连接对相关。

您应该怎么做?虽然您的代码未指定任何特定的编码语言,但我认为,您甚至会问这个问题而偏离轨道。订阅两个队列。如果工人无事可做,我认为计算机对此会非常满意。如果您担心一个特别繁忙的队列发出太多的工作,则可以使用多种技术来限制进入该使用者的消息。一种流行的技术是prefetch

© www.soinside.com 2019 - 2024. All rights reserved.