EASYLT文档 > RabbitMQ框架 > Topic模式

开发场景

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

    <?php
    //引入服务器配置文件【WEB服务器运行无需实现  server服务的CLI模式运行必须实现】
    include('server.ini');
    
    //创建生产者【必须实现】
    $topic_producter = new Topic_producter($v_host,$exchange,$topic);
    //$v_host为Virtual host用户名
    //$exchange为消息队列交换器名称
    //$topic为生产者、消费者与消息队列相互匹配的通配符
    
    //推送消息到交换器中【必须实现】
    $topic_producter->push(function(){
        //匿名回调函数中写你的业务
        //推送消息到交换器中请return $var
    });
    
    

    消费者

    <?php
    //引入服务器配置文件【必须实现】
    include('server.ini');
    
    //创建消费者【必须实现】
    $topic_consumer = new Topic_consumer($v_host,$exchange,$topic,$queue);
    //$v_host为Virtual host用户名
    //$exchange为消息队列交换器名称,保持与生产者一致;
    //$topic为生产者、消费者与消息队列相互匹配的通配符
    //$queue为消息队列名称,默认可不填写该参数,系统会自动创建临时消息队列,消费者文件进程结束后临时消息队列自动删除。如需对消息队列持久化处理,请在core/config目录下config_rabbitmq.php中配置消息队列为持久化模式并填写该参数。
    
    //从消息队列中取消息【必须实现】
    $topic_consumer->pop(function($response_data){
        //匿名回调函数中写你的业务
        //$response_data为读取消息队列中的数据
        //读取消息后需确认成功消费消息请return true,否则读取消息后,该条消息仍然保持在消息队列中;
    });