• thinkPHP5如何使用rabbitmq


    thinkPHP5如何使用rabbitmq?

    安装好 tp5 的 rabbitmq 扩展后,在项目根目录文件添加文件 rabbitmq.php 引导启动 rabbitmq。

    <?php
    
    define('APP_PATH', __DIR__ . '/application/');
    
    define('BIND_MODULE','rabbitmq/Client');
    
    // 加载框架引导文件
    
    require __DIR__ . '/thinkphp/start.php';
    
       

    生成者

     private function queueEvent($message)
    
        {
    
    //        error_log("
    ******" . date("His") . "********
    " . print_r($message, 1) . "
    *************
    ", 3,
    
    'messag_event.log');
    
            dump($message);
    
            //设置你的连接
    
            $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456',
    
            'vhost'=>'/');
    
      
    
      
    
            $content = $message;
    
    //创建连接和channel
    
            $conn = new AMQPConnection($conn_args);
    
            if (!$conn->connect()) {
    
                die("Cannot connect to the broker!
    ");
    
            }
    
            $channel = new AMQPChannel($conn);
    
      
    
    //创建交换机
    
            $e_name = 'MQTT_device_event'; //交换机名
    
            $ex = new AMQPExchange($channel);
    
            $ex->setName($e_name);
    
    //        $ex->setType(AMQP_EX_TYPE_TOPIC); //direct类型
    
            $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
    
            $ex->setFlags(AMQP_DURABLE); //持久化
    
            $ex->declareExchange();
    
        }
    
       

    相关推荐:《ThinkPHP教程

    运行 php 目录运行生产者

    消费者

    public function index()
    
        {
    
            //连接RabbitMQ
    
            $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456', 'vhost'
    
            => '/');
    
      
    
            $e_name = 'MQTT_device_event'; //交换机名
    
            $q_name = 'q_event'; //队列名
    
            $k_route = 'key_event'; //路由key
    
    //创建连接和channel
    
            $conn = new AMQPConnection($conn_args);
    
            if (!$conn->connect()) {
    
                die("Cannot connect to the broker!
    ");
    
            }
    
            $channel = new AMQPChannel($conn);
    
    //创建交换机
    
            $ex = new AMQPExchange($channel);
    
            $ex->setName($e_name);
    
            $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
    
            $ex->setFlags(AMQP_DURABLE); //持久化
    
            $ex->declareExchange();
    
    //创建队列
    
            $q = new AMQPQueue($channel);
    
            $q->setName($q_name);
    
            $q->setFlags(AMQP_DURABLE); //持久化
    
            $q->declareQueue();     //最好队列object在这里declare()下,否则如果是新的queue会报错
    
    //绑定交换机与队列,并指定路由键,可以多个路由键
    
            $q->bind($e_name, $k_route);
    
    //$q->bind($e_name, 'key_33'); 
    
    //阻塞模式接收消息
    
            echo "Message:
    ";
    
            while(True){
    
                $q->consume(function($envelope, $queue) {
    
                    $msg = $envelope->getBody();
    
                    //处理数据
    
                    echo $msg . PHP_EOL; //处理消息
    
                    $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答
    
                });
    
                //$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答
    
            }
    
      
    
            $conn->disconnect();
    
        }
    
       

    执行下命令 php rabbitmq

    启动即可

    查看队列是否被消费

    登录 http://127.0.0.115672/#/queues 地址

  • 相关阅读:
    学习笔记
    django中嵌入百度editor插件
    定位屡试不爽
    django忘记管理员账号和密码处理
    linux上配置java环境
    python3学习问题汇总
    Android系统框架
    python深复制和浅复制
    装饰器原理和装饰器参数使用
    小白神器
  • 原文地址:https://www.cnblogs.com/it-3327/p/11740791.html
Copyright © 2020-2023  润新知