如何使用PHP的RabbitMQ延迟消息队列?
发布时间:2020-12-13 21:54:29 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试从 PHP使用 Delayed Message Queue for RabbitMQ,但我的消息正在消失. 我用以下代码声明交换: $this-channel-exchange_declare( 'delay','x-delayed-message',false,/* passive,create if exchange doesn't exist */ true,/* durable,persist thr
我正在尝试从
PHP使用
Delayed Message Queue for 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']]); 我用这段代码绑定队列: $this->channel->queue_declare( $queueName,/* 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 PhpAmqpLibMessageAMQPMessage; use PhpAmqpLibWireAMQPTable; $msg = new AMQPMessage($data,array( 'delivery_mode' => 2,# make message persistent 'application_headers' => new AMQPTable([ 'x-delay' => 5000 ]) ) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |