Yii2 RabbitMQ 使用详解
来源:互联网 发布:郑州师范学院网络教学 编辑:程序博客网 时间:2024/06/14 08:49
PHP虽然在普通消息队列中表现不算特别好,但是因为其轻便简单作为客户端来接收其他语言脚本处理后的消息再作为服务端传给js客户端也是很常见的,所以PHP消息队列的使用还是很重要。
安装php-amqplib
- 这里注意的是还有叫yii2-amqp的包,这些直接通过component注入,但是可能会因为版本不同出各种各样的问题,还有各种各样的依赖包也可能因为版本出现问题,比如yii2-amqp这个包
requiresphp: >=5.3.0videlalvaro/php-amqplib: 2.4.0webtoucher/yii2-commands: *requires (dev)NonesuggestsNoneprovidesNoneconflictsNonereplacesNone
需要的几个依赖包版本都有一点问题,笔者在试验的时候已经不能正常使用了(也可能是我的姿势不对),反正直接用原本的那个php-amplib包是更好的,配置也非常的简单。
配置 php-amqplib
- 可以直接根据github上的README.md来配置,这里再稍微说一下
$ php composer.phar require php-amqplib/php-amqplib “2.6.*”
安装好之后我们可以在vendor下找到php-amqplib包。
使用方法
- 不需要去修改配置文件夹
在要使用队列的相应控制器下加上use PhpAmqpLib\Message\AMQPMessage;use PhpAmqpLib\Connection\AMQPStreamConnection;
- 接下来建立一个类
class PhpClient { private $connection; private $channel; private $callback_queue; private $response; private $corr_id; private $result = ''; CONST HOST = "your_host_ip"; CONST PORT = 5672; //默认5672 CONST USER = "username"; //用户名 CONST PASS = "password";//密码 public function __construct() { $this->connection = new AMQPStreamConnection( self::HOST, self::PORT, self::USER, self::PASS); //建立连接 $this->channel = $this->connection->channel(); list($this->callback_queue, ,) = $this->channel->queue_declare( "", false, false, true, false); $this->channel->basic_consume( $this->callback_queue, '', false, false, false, false, array($this, 'on_response')); } public function on_response($rep) { if($rep->get('correlation_id') == $this->corr_id) { $this->result .= $rep->body; $this->response = $rep->body; } } public function call($n) { $this->response = null; $this->corr_id = uniqid(); $msg = new AMQPMessage( (string) $n, array('correlation_id' => $this->corr_id, 'reply_to' => $this->callback_queue) ); $this->channel->basic_publish($msg, '', 'queue'); //这里的queue是消息名称 while($this->response != "end") { $this->channel->wait(); } return $this->result; }}
- 在控制器中调用这个类
$client = new PhpClient();$responses = $client->call('information'); //在这里传入发送给服务端脚本的内容
这样就可以很简单的实现消息队列了,封装好的方法有兴趣的可以自行查看源代码
--by vampirebitter
0 0
- Yii2 RabbitMQ 使用详解
- RabbitMQ安装使用详解
- .Net使用RabbitMQ详解
- .Net使用RabbitMQ详解
- RabbitMQ使用详解
- RabbitMQ安装和使用详解
- RabbitMQ 客户端(for andorid)使用详解
- yii2使用
- RabbitMQ详解
- RabbitMQ 详解
- Yii2 yii2-imagine的使用
- Yii2分页的使用及其扩展方法详解
- 使用rabbitMQ
- rabbitmq 使用
- RabbitMQ使用
- RabbitMQ使用
- rabbitmq使用
- rabbitmq使用
- 沟通管理论文
- Android 对getWidth和getMeasuredWidth 的理解
- XML简单解析之Dom解析
- 面向结构与面向对象的区别
- HDFS的基础组成部分及基础操作
- Yii2 RabbitMQ 使用详解
- 排序算法(四)选择排序及优化版本
- JVM学习笔记(四)------内存调优
- nginx端口占用案例分享
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- PHP生成二维码名片带LOGO并解决LOGO失真
- 扩展欧几里得(poj1061)
- StringUtils.isNotBlank(XX)
- Linux守护进程的实现