rabbitmq生产与消费测试
消息生成者:
<?php defined( 'BASEPATH' ) OR exit ( 'No direct script access allowed' ); /* require_once FCPATH . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; */ /* set_include_path(APPPATH . '/third_party/PhpAmqpLib/Connection'); require_once APPPATH . 'third_party/PhpAmqpLib/Connection/AMQPStreamConnection.php'; require_once APPPATH . 'third_party/PhpAmqpLib/Connection/Message/AMQPMessage.php'; */ require_once FCPATH . '/vendor/autoload.php' ; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; $exchangeName = 'kd_sms_send_ex' ; //交换机名 $queueName = 'kd_sms_send_q' ; //队列名称 $routingKey = 'sms_send' ; //路由关键字(也可以省略) //建立生产者与mq之间的连接 $connection = new AMQPStreamConnection( '101.200.62.202' , 5672, 'msgsend' , 'test_123' , 'msgs' ); $channel = $connection ->channel(); //在已连接基础上建立生产者与mq之间的通道 $channel ->exchange_declare( $exchangeName , 'direct' , false, true, false); //声明初始化交换机 $channel ->queue_declare( $queueName , false, true, false, false); //声明初始化一条队列 $channel ->queue_bind( $queueName , $exchangeName , $routingKey ); //将队列与某个交换机进行绑定,并使用路由关键字 $msgBody = json_encode([ "name" => "iGoo" , "age" => 22]); $msg = new AMQPMessage( $msgBody , [ 'content_type' => 'text/plain' , 'delivery_mode' => 2]); //生成消息 $channel ->basic_publish( $msg , $exchangeName , $routingKey ); //推送消息到某个交换机 echo " [x] Sent 'Hello World!'\n" ; $channel ->close(); $connection ->close(); |
消息消费者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php defined( 'BASEPATH' ) OR exit ( 'No direct script access allowed' ); require_once FCPATH . '/vendor/autoload.php' ; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; $exchangeName = 'kd_sms_send_ex' ; //交换机名 $queueName = 'kd_sms_send_q' ; //队列名称 $routingKey = 'sms_send' ; //路由关键字(也可以省略) $connection = new AMQPStreamConnection( '101.200.62.202' , 5672, 'msgsend' , 'test_123' , 'msgs' ); $channel = $connection ->channel(); $channel ->exchange_declare( $exchangeName , 'direct' , false, true, false); //声明初始化交换机 $channel ->queue_declare( $queueName , false, true, false, false); $channel ->queue_bind( $queueName , $exchangeName , $routingKey ); //将队列与某个交换机进行绑定,并使用路由关键字 echo " [*] Waiting for messages. To exit press CTRL+C\n" ; $callback = function ( $msg ) { echo ' [x] Received ' , $msg ->body, "\n" ; }; $channel ->basic_consume( $queueName , '' , false, true, false, false, $callback ); while ( $channel ->is_consuming()) { //这个是阻塞模式,有消息就执行回调 $channel ->wait(); } /* $channel->close(); $connection->close(); */ |
posted on 2021-05-19 09:10 andydaopeng 阅读(177) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)