如何在php中对rabbitmq消息进行优先级排序?
我正在使用如何在php中对rabbitmq消息进行优先级排序?,php,laravel,rabbitmq,Php,Laravel,Rabbitmq,我正在使用RabbitMQ(3.8.3erlang22.3.1)来表示Laravel(6.18.*.。 为此,我使用 在正常队列和消费者的情况下,一切正常。 为了对消息进行优先级排序,我在队列名称中定义了多个后缀为0-3的队列。我通过手动计算作业总数,将作业路由到不同的队列 使用这种方法,对于不同的任务,我需要创建更多在名称上具有优先级的队列。创建队列名称中包含0-3的队列似乎不可伸缩 现在我正在尝试设置每条消息的优先级。为此,我尝试将AMQPMessage中的priority属性用作: $ms
RabbitMQ(3.8.3erlang22.3.1)
来表示Laravel(6.18.*.
。
为此,我使用
在正常队列和消费者的情况下,一切正常。
为了对消息进行优先级排序,我在队列名称中定义了多个后缀为0-3的队列。我通过手动计算作业总数,将作业路由到不同的队列
使用这种方法,对于不同的任务,我需要创建更多在名称上具有优先级的队列。创建队列名称中包含0-3的队列似乎不可伸缩
现在我正在尝试设置每条消息的优先级。为此,我尝试将AMQPMessage
中的priority
属性用作:
$msg=newamqpmessage(“Hello World!”,数组(
“交付模式”=>2,
“优先级”=>1,
'timestamp'=>time(),
“到期日”=>strval(1000*(strotime(“+1天午夜”)-time()-1))
));
我尝试了多条具有不同优先级的消息,但优先级似乎根本不起作用
- 我在队列上设置了
x-max-priority
- 我将AMQP消息的
优先级设置为1,并从一个终端发送100K消息
- 同时,我发送了另一组优先级为
的10条消息
知道我犯了什么错误吗?请让我知道是否有任何东西可以设置每条消息的优先级,以便消费者首先选择它们。尝试使用set,如:
$headers = new AMQPTable([
'x-cache-ttl' => 10 * 60000,
]);
$msg = new AMQPMessage($msg);
$msg->set('application_headers', $headers);
$msg->set('priority', 2);
别忘了用“x-max-priority”声明队列
$options = new AMQPTable([
'x-max-priority' => 3,
]);
$connection = new AMQPStreamConnection(RABBIT_HOST, RABBIT_PORT, RABBIT_LOGIN, RABBIT_PASS);
$channel = $connection->channel();
$channel->queue_declare('queue_name', false, false, false, false, false, $options);
尝试使用set,如下所示:
$headers = new AMQPTable([
'x-cache-ttl' => 10 * 60000,
]);
$msg = new AMQPMessage($msg);
$msg->set('application_headers', $headers);
$msg->set('priority', 2);
别忘了用“x-max-priority”声明队列
$options = new AMQPTable([
'x-max-priority' => 3,
]);
$connection = new AMQPStreamConnection(RABBIT_HOST, RABBIT_PORT, RABBIT_LOGIN, RABBIT_PASS);
$channel = $connection->channel();
$channel->queue_declare('queue_name', false, false, false, false, false, $options);