2022-10-10 rabbitmq 死信队列

本文 参考 https://www.jianshu.com/p/829f41b0700e

上文申明了 两个 队列 分别 与 两个交换机 一一对应

个别同学,可能希望代码尽量 简洁些. 这里将普通交换机 使用rabbitmq的默认交换机

定义普通队列时,配置好上述属性
<?php
namespace rabbitmq;
require_once './lib/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Wire\AMQPTable;

header('Content-Type: text/html; charset=gb2312');

try{
    //连接
    $connection = new AMQPStreamConnection('xxx.com', 5672, 'admin', 123456,'/',true);
    $channel = $connection->channel();

    //定义普通队列
    $channel->queue_declare(
        'PHP-Queue',
        false,
        true,
        false,
        false,
        false,
        new AMQPTable([
            'x-message-ttl'=>15000,
            'x-dead-letter-exchange'=>'PHP-Dead-Exchange',
            'x-dead-letter-routing-key'=>'PHP-Dead-Key'
        ])
    );

    //死信交换机
    $channel->exchange_declare('PHP-Dead-Exchange','direct');
    //死信队列
    $channel->queue_declare('PHP-Dead-Queue');
    //死信绑定
    $channel->queue_bind('PHP-Dead-Queue','PHP-Dead-Exchange','PHP-Dead-Key');

    //向普通队列发送消息
    $message = new AMQPMessage('hello world');
    $channel->basic_publish($message,'','PHP-Queue');

    $channel->close();
    $connection->close();
    
}catch (\Exception $exception){

    echo "异常信息".$exception->getMessage();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容