消息系统允许软件应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步和解偶.
或许你正在考虑进行数据投递,非阻塞操作或推送通知。或许你想要实现发布/订阅,异步处理,或者工作队列。所有这些都属于消息系统的模式。
RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息再传输过程中的安全。
环境准备
RabbitMQ服务端安装
-
获取镜像
选择带有管理控制服务扩展的RabbitMQ镜像
# 指定版本,选择包含带有web控制管理端的镜像 docker pull rabbitmq:management -
运行镜像
采用默认用户运行,RabbitMQ 默认用户为
guest默认密码为guest默认服务端口5672默认管理端口15672docker run -d --hostname rabbitmq --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management -
查看管理端
容器启动成功后,通过浏览器访问
http://localhost:15672打开管理端页面.输入用户名
guest密码guest打开控制端页面,控制端的各功能使用不做过多描述.
到此表示rabbitmq服务端安装成功
RabbitMQ客户端PHP扩展安装
进行使用pecl安装扩展时,会存在对文件的操作权限问题,如果权限不足请使用 sudo 执行.
-
安装AMQP扩展
rabbitmq支持amqp协议,本例使用amqp扩展进行讲述.
通过
pecl进行安装,未安装pecl的请参考官网,自行安装即可.pecl install amqp我在安装时遇到输出警告信息
phpseclib/phpseclib suggests installing ext-libsodium提示缺少libsodlum扩展.
-
安装sodium扩展
pecl install libsodium执行成功后控制台会输出执行结果
Build process completed successfully Installing '/usr/local/Cellar/php@7.1/7.1.30_1/pecl/20160303/sodium.so' install ok: channel://pecl.php.net/libsodium-2.0.22 Extension libsodium enabled in php.ini表示扩展已安装成功,默认会在
php.ini文件自动添加扩展引入extension="sodium.so"默认引入时,扩展文件路径为默认路径,
请检查
php.ini文件扩展路径是否正确php -m检查扩展是否正确引入
Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php@7.1/7.1.30_1/lib/php/20160303/sodium.so' - dlopen(/usr/local/Cellar/php@7.1/7.1.30_1/lib/php/20160303/sodium.so, 9): image not found in Unknown on line 0表示扩展重复引入.检查各ini配置文件,删除重复即可.
扩展文件正确路径应该为,pecl 执行结果中的提示路径
/usr/local/Cellar/php@7.1/7.1.30_1/pecl/20160303/sodium.so安装
sodium扩展后,重复安装amqp扩展命令即可安装成功.扩展引入和检查,同sodium扩展.
-
安装php-amqplib组件
通过composer进行安装
php-amqplib组件composer.json中加入组件名称{ "require": { "php": ">=7.1.0", "php-amqplib/php-amqplib": ">=2.9.0" } }执行
composer install进行安装.
到此PHP继承RabbitMQ开发的基础工作已经准备完毕.