gpt4 book ai didi

php - 如何从 PHP 使用 RabbitMQ 延迟消息队列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:06 24 4
gpt4 key购买 nike

我正在尝试使用 Delayed Message Queue对于来自 PHP 的 RabbitMQ,但我的消息只是消失了。

我使用以下代码声明交换:

$this->channel->exchange_declare(
'delay',
'x-delayed-message',
false, /* passive, create if exchange doesn't exist */
true, /* durable, persist through server reboots */
false, /* autodelete */
false, /* internal */
false, /* nowait */
['x-delayed-type' => ['S', 'direct']]);

我用这段代码绑定(bind)队列:

$this->channel->queue_declare(
$queueName,
false, /* Passive */
true, /* Durable */
false, /* Exclusive */
false /* Auto Delete */
);
$this->channel->queue_bind($queueName, "delay", $queueName);

我正在使用此代码发布一条消息:

$msg = new AMQPMessage(json_encode($msgData), [
'delivery_mode' => 2,
'x-delay' => 5000]);
$this->channel->basic_publish($msg, 'delay', $queueName);

但是消息不会延迟;它仍然立即交付。我错过了什么?

最佳答案

来自 here ,

消息的创建应该是

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Wire\AMQPTable;

$msg = new AMQPMessage($data,
array(
'delivery_mode' => 2, # make message persistent
'application_headers' => new AMQPTable([
'x-delay' => 5000
])
)
);

关于php - 如何从 PHP 使用 RabbitMQ 延迟消息队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com