ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] 消费者代码示例 **消费者:consumer.php** ~~~ <?php //申明连接参数 $config = [ 'host'=>'127.0.0.1', 'vhost'=>'/', 'port'=>5672, 'login'=>'test', 'password'=>'123456' ]; //连接broker,创建一个rabbitmq连接 $cnn = new AMQPConnection($config); //抛出异常 if(!$cnn->connect()){ echo "连接失败"; exit(); } //在连接内创建一个通道 $ch = new AMQPChannel($cnn); //创建一个交换机 $ex = new AMQPExchange($ch); //申明路由键 $routingKey = 'key_1'; //申明交换机名称 $exchangeName = 'exchange_1'; //设置交换机名称 $ex->setName($exchangeName); //设置交换机的类型 $ex->setType(AMQP_EX_TYPE_DIRECT); //设置交换机的持久 $ex->setFlags(AMQP_DURABLE); //申明交换机 $ex->declareExchange(); //创建一个消息队列 $q = new AMQPQueue($ch); //设置队列名称 $q->setName('queue_1'); //设置队列的持久 $q->setFlags(AMQP_DURABLE); //申明消息队列 $q->declareQueue(); $q->bind($ex->getName(), $routingKey); //接收消息并进行处理回调方法 function receive($envelope, $queue){ sleep(1); echo $envelope->getBody()."\n"; } $q->consume("receive"); ~~~ 1. 当前通道 交换机 队列全部为空 ![](https://img.kancloud.cn/8b/67/8b671ce0f4f922bf3d02b4b770542480_934x449.png) 2. 运行消费者代码 ![](https://img.kancloud.cn/f2/f0/f2f084e7285f13c4c08159449a53a292_478x75.png) 3. 查看 rabbitmq 控制台,看到添加交换机 队列成功 连接: ![](https://img.kancloud.cn/38/1c/381cb863ebba6779965c83fb8143cc42_897x347.png) 通道: ![](https://img.kancloud.cn/5a/62/5a6239c2f736c2833beeefdf7ad79164_1143x347.png) 交换机: ![](https://img.kancloud.cn/00/5f/005f4d967cda83e63886bf13eabdb8a8_805x540.png) 队列: ![](https://img.kancloud.cn/4c/17/4c17a44afa4e5d185a89c6ebfed30b5c_1037x414.png) >[info] 生产者代码示例 **生产者:publisher.php** ~~~ <?php //申明连接参数 $config = [ 'host'=>'127.0.0.1', 'vhost'=>'/', 'port'=>5672, 'login'=>'test', 'password'=>'123456' ]; $cnn = new AMQPConnection($config); //抛出异常 if(!$cnn->connect()){ echo "连接失败"; exit(); } $cn = new AMQPChannel($cnn); $ex = new AMQPExchange($cn); $routingKey = 'key_1'; $exchangeName = 'exchange_1'; $ex->setName($exchangeName); //设置交换机的类型 $ex->setType(AMQP_EX_TYPE_DIRECT); //设置交换机的持久 $ex->setFlags(AMQP_DURABLE); //申明交换机 $ex->declareExchange(); for($i=1;$i<=10;$i++){ //消息内容 $msg = [ 'data'=>'消息_'.$i, ]; $ex->publish(json_encode($msg), $routingKey , AMQP_NOPARAM, array('delivery_mode' => 2)); } ~~~ 1. 运行 生产者 for 循环推送消息 ![](https://img.kancloud.cn/3e/14/3e148d3b38289a31886ac32b9dcd8225_446x77.png) 2. 查看消费者是否输出消息 ![](https://img.kancloud.cn/13/1b/131b99d72d1f2460787b2386dae79342_468x121.png) 3. 查看 mq 控制台队列情况 ![](https://img.kancloud.cn/3f/b7/3fb7fa151fa5515137476522872d0cd0_1063x354.png)