Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中对rabbitmq消息进行优先级排序?_Php_Laravel_Rabbitmq - Fatal编程技术网

如何在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条消息
但消费者似乎并不使用优先级为2的消息


知道我犯了什么错误吗?请让我知道是否有任何东西可以设置每条消息的优先级,以便消费者首先选择它们。

尝试使用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);