rabbitMQ 消费队列使用方法

我们  要消费 Queues  下    Virtual host  名称为cloud_platform   队列name为 biz_cloud_info   

这个时候 需要程序里面设置消费队列的基本信息    host  ,port  user  还有password  vhost  例如

'mq' => [
    'host' => '0.0.0.0',
    'port' => '5672',
    'user' => 'crmtest',
    'password' => '123321',
    'vhost' => 'crmtest'
],

还需要设置是那个队列

//交付信息同步队列
'read_biz_cloud' => [
    'exchange_name' => 'ex_cloud_platform',        那个通道
    'queue_name' => 'biz_cloud_info',              队列名称
    'route_key' => 'rk_biz_cloud_info',
    'consumer_tag' => ''
],

 

当然这些信息都是要放到config.php里面

 

<?php
require_once 'vendor/autoload.php';
require_once 'common/mq.php';
require_once 'common/redis.php';
$config=require_once "config.php";
$handle=new mq();
$handle->connect(array_merge($config['mq'],$config['read_biz_cloud']));
$process = function ($msg) {
    $msgArr = json_decode($msg->body, true);
    //---------------+8商标-----------------------------------
    if ($msgArr['q_type'] == 'biz_userbrandinfo') {
        require_once 'lib/biz_userbrandinfo.php';
        $m= new biz_userbrandinfo();
        if($m->handle($msgArr['q_data'],$msgArr['q_id'])){
            echo 'biz_userbrandinfo ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[biz_userbrandinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步成功[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'1','1',date('Y-m-d H:i:s'));
        }else{
            echo 'biz_userbrandinfo ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[biz_userbrandinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步失败[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'1','0',date('Y-m-d H:i:s'));
            $m->handle_error($msgArr);
        }
    }
    //---------------商标流程-----------------------------------
    if ($msgArr['q_type'] == 'order_sync_biz') {
        require_once 'lib/order_sync_biz.php';
        $m= new order_sync_biz();
        if($m->handle($msgArr['q_data'],$msgArr['q_id'])){
            echo 'order_sync_biz ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[order_sync_biz]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步成功[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'4','1',date('Y-m-d H:i:s'));
        }else{
            echo 'order_sync_biz ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[order_sync_biz]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步失败[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'4','0',date('Y-m-d H:i:s'));
            $m->handle_error($msgArr);
        }
    }
    //-----------------------版权--------------------------------------
    if ($msgArr['q_type'] == 'biz_usercopyrightinfo') {
        require_once 'lib/biz_usercopyrightinfo.php';
        $m=new biz_usercopyrightinfo();
        if($m->handle($msgArr['q_data'])){
            echo 'biz_usercopyrightinfo['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[biz_usercopyrightinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步成功[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'2','1',date('Y-m-d H:i:s'));
        }else{
            echo 'biz_usercopyrightinfo['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[biz_usercopyrightinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步失败[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'2','0',date('Y-m-d H:i:s'));
            $m->handle_error($msgArr);
        }
    }
    //--------------------------专利---------------------------------
    if ($msgArr['q_type'] == 'biz_userpatentinfo') {
        require_once 'lib/biz_userpatentinfo.php';
        $m=new biz_userpatentinfo();
        if($m->handle($msgArr['q_data'])){
            echo 'biz_userpatentinfo['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[biz_userpatentinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步成功[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'3','1',date('Y-m-d H:i:s'));
        }else{
            echo 'biz_userpatentinfo['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[biz_userpatentinfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步失败[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'3','0',date('Y-m-d H:i:s'));
            $m->handle_error($msgArr);
        }
    }
    //--------------------------更新状态---------------------------------
    if ($msgArr['q_type'] == 'CloudProcessStatusInfo') {
        require_once 'lib/cloud_biz_info.php';
        $m= new cloud_biz_info();
        if($m->handle($msgArr['q_data'],$msgArr['q_id'])){
            echo 'CloudProcessStatusInfo ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[CloudProcessStatusInfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步成功[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'5','1',date('Y-m-d H:i:s'));
        }else{
            echo 'CloudProcessStatusInfo ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[CloudProcessStatusInfo]:'.$msg->body);
            $pid=isset($msgArr['q_data']['PID'])?$msgArr['q_data']['PID']:'null';
            redisLog('rabbitmq_queue同步失败[q_id]:'.$msgArr['q_id']);
            $m->sync_queue_log($pid,$msgArr['q_id'],'5','0',date('Y-m-d H:i:s'));
            $m->handle_error($msgArr);
        }
    }
    //---------------处理过程-----------------------------------

    if ($msgArr['q_type'] == 'biz_cloudfileconfirm'){

        require_once 'lib/biz_confirm.php';
        $m= new biz_confirm();

        if($m->handle($msgArr['q_data'],$msg->body)){

            echo 'biz_confirm ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步成功'."\n";
            redisLog('rabbitmq_queue同步成功[biz_confirm]:'.$msg->body);

        }else{

            echo 'biz_confirm ['.$msgArr['q_id'].']['.date('Y-m-d H:i:s').']同步失败'."\n";
            redisLog('rabbitmq_queue同步失败[biz_confirm]:'.$msg->body);
            $m->handle_error($msgArr);

        }

    }
    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);

    //-----------------------------------------------------------
//    die;
};


$handle->consume($process);

这东西 如果要测试 ,同时不消耗的话, 就把$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);  注释掉, 同时die;y一下。

 

需要注意的主要事情就是  有些消息一进来就  “Unacked”    我只会一种方式处里

 

查看  Consumers  下有几个消费者 ,一一点进去  

点击 Details 下的Connection IP进去   下拉点击  按钮  force close

 

自己留下痕迹 ,自己用, 别人看不懂 概不负责

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值