这篇文章是根据自己的理解,讲解有关 RabbitMQ 的一些基础知识.另外包括部署,基本设置,信道,路由交换,队列及等等基础概念. 这些将在后续文章中一一道来
什么是RabbitMQ?
惯例开头,要理解一个工具,必须先了解这个工具是干什么的,可以用在什么的地方,这样才能更好的使用.
RabbitMQ 本质是一个实现了 AMQP 协议的一个工具,与其相似的还有 RocketMQ, Kafka, ActiveMQ, ZreoMQ 等等.其主要解决的问题是可以安全可靠的向应用之间传递消息,以便不同应用,不同语言的程序之间的消息传递.
我们知道能完成不同应用之间消息传递方式有很多,比如 HTTP,又比如数据库.但对比与 AMQP 来说,它比 HTTP 更安全,又比数据库更轻量,更方便.并且还支持多种链路协议,这样使得消息队列能够实现多种多样的消息传递方式.所以现如今消息队列广泛的使用在项目开发中,作为微服务之间的通讯或项目之间的解耦.
这次就简单的说一下基于 AMQP 协议,以 erlang 开发的消息队列中间件 RabbitMQ
如何快速部署
为了快速演示,建议使用 Docker 部署.Docker Hub 上也有关于如何部署 RabbitMQ 的文档
此处我们选用带有可视化操作面板的版本,
1 | 拉取镜像 |
仅仅两行命令,就启动了一个 RabbitMQ. 那么上面 docker run 命令,开启了两个端口映射,分别是
5672(默认服务端口),传递接收消息此本端口完成15672(可视化面板端口), 由于是在本地开启的容器,所以访问127.0.0.1:15672, 即可访问管理面板- 默认登录账号为:
guest密码:guest
可以登录管理面板观察下各个按钮及栏目
快速使用
那么在一个消息的收发过程中,必须有发送者和接受者, 在 MQ 中我们称之为生产者(producer), 消费者(consumer),非常形象
所以我们的示例中也是需要 producer 与 consumer 两份代码. 代码参照官方示例文档
1 | // consumer.php |
然后使用 php-cli 运行起来:
php comsumer.php
接着程序会一直阻塞运行等待消息的到来.
下面是 producer.php 的编写
1 | // producer.php |
开启另一个控制台, 并运行:
php producer.php
即可看到效果
总结
本篇文章,暂时仅对 RabbitMQ 的安装,以及在 PHP 上的使用,做了简要介绍.相关的更深入解析文章后续会陆续发布