EASYLT文档 > RabbitMQ框架 > 死信队列模式

开发场景

  • dead(死信队列)模式的生产者、消费者为一对一或一对多,多个消费者根据routing匹配同时读取、消费消息队列中的相同的消息,请同时开启多个消费者并内存常驻运行,且消费模式建议为等待模式,默认为等待模式。
  • 生产者

    <?php
    //引入服务器配置文件【WEB服务器运行无需实现  server服务的CLI模式运行必须实现】
    include('server.ini');
    
    //创建生产者【必须实现】
    $dead_producter = new Dead_producter($v_host,$exchange,$dead_exchange,$routing,$dead_routing,$queue, $dead_queue,$ttl);
    //$v_host为Virtual host用户名
    //$exchange为正常消息队列交换器名称
    //$dead_exchange为死信消息队列交换器名称
    //$routing为生产者、消费者与正常消息队列相互匹配的key
    //$dead_routing为生产者、消费者与死信消息队列相互匹配的key
    //$queue为正常消息队列名称
    //$dead_queue为死信消息队列名称
    //$ttl为正常消息队列中消息的过期时间,后期后自动转入死信消息队列中;
    
    //推送消息到正常消息队列交换器中【必须实现】
    $dead_producter->push(function(){
        //匿名回调函数中写你的业务
        //推送消息到交换器中请return $var
    });
    
    

    消费者

    <?php
    //引入服务器配置文件【必须实现】
    include('server.ini');
    
    //创建消费者【必须实现】
    $dead_consumer = new Dead_consumer($v_host,$dead_exchange,$dead_routing,$dead_queue);
    //$v_host为Virtual host用户名
    //$dead_exchange为死信消息队列交换器名称,保持与生产者一致;
    //$dead_routing为生产者、消费者与死信消息队列相互匹配的key
    //$dead_queue为死信消息队列名称,保持与生产者一致;
    //以上三个参数为死信消息队列参数时,可实现延迟队列,也可以替换三个参数为正常消息队列参数,则可以在消息过期前去正常消息队列中读取、消费消息;
    
    //从消息队列中取消息【必须实现】
    $dead_consumer->pop(function($response_data){
        //匿名回调函数中写你的业务
        //$response_data为读取消息队列中的数据
        //读取消息后需确认成功消费消息请return true,否则读取消息后,该条消息仍然保持在消息队列中;
    });