【发布时间】:2021-03-18 21:24:15
【问题描述】:
我将RabbitMQ (3.8.3 Erlang 22.3.1) 用于Laravel (6.18.*)。
为此,我正在使用 https://github.com/vyuldashev/laravel-queue-rabbitmq。
使用正常的队列和消费者,一切正常。 为了确定消息的优先级,我在队列名称中定义了多个以 0-3 作为后缀的队列。我通过手动计算作业总数将作业路由到不同的队列。
使用这种方法,对于不同的任务,我需要创建更多具有名称优先级的队列。创建队列名称中包含 0-3 的队列似乎不可扩展。
现在我正在尝试为每条消息设置优先级。为此,我尝试在AMQPMessage 中使用priority 属性:
$msg = new AMQPMessage("Hello World!", array(
'delivery_mode' => 2,
'priority' => 1,
'timestamp' => time(),
'expiration' => strval(1000 * (strtotime('+1 day midnight') - time() - 1))
));
我尝试了多个具有不同优先级的消息,但优先级似乎根本不起作用。
- 我在队列中设置了
x-max-priority - 我将 AMQPMessage 的
priority设置为 1,并从一个终端发送了 100K 消息 - 同时我用
priority2 发送了另一组10条消息
但消费者似乎没有消费优先级为 2 的消息。
知道我做错了什么吗?请让我知道是否有任何事情可以设置每条消息的优先级,以便消费者首先选择它们。
【问题讨论】: