rabbitmq消息队列的应用

面对一些响应不及时、耗时的业务场景,我们除了可以使用多线程或者多进程的方式来处理,以提高程序的响应速度,同时,随着消息队列越来越成熟,以RabbitMQ为主的高级消息队列逐渐的走入我们程序员的世界,它也能够胜任这些场景,今天我们就来聊聊PHP版的RabbitMQ。

本机系统环境情况

PHP:PHP 7.1.2

web服务器:Apache

数据库:MySQL

操作系统:Win7 64位

安装RabbitMQ服务端

由于RabbitMQ是基于Erlang的,所以第一步需要先去安装,而目前OS是Win7,所以打开Erlang的官方网站,找到对应操作系统的版本下载并安装就可以了,由于是exe文件,我们直接点下一步下一步等就能够完成Erlang的安装。

rab1

接下来安装RabbitMQ,同样打开其官方网站,我们也能够看到该软件提供了各种操作系统版本,我们选择相应的版本进行下载并安装就可以了,这里是exe文件,所以还是只需要点击下一步下一步等就完成了。

rab2

安装PHP RabbitMQ扩展

首先打开php的官方扩展库PECL网站,找到AMQP(高级消息队列协议)扩展,为什么这样呢?因为AMQP扩展是一个能够与所有兼容AMQP协议的服务程序进行通讯,而RabbitMQ就是兼容AMQP的协议。

打开AMQP我们能够看到,它有windows扩展(dll),但是当下载的时候,我们发现有很多版本,即线程安全和非线程安全、64位和32位的版本,这个时候怎么办呢?

rb3

rb4

不知道你是否过去从PHP官方下载PHP进行安装的经历没有,其实从官方网站下载PHP的时候,就有上面的上面线程安全和非线程安全等,也就是说,其实相应的PECL扩展必须和你的PHP版本相对应,否则,你的扩展会报错无法使用,于是我们用phpinfo就能够看到我们目前的PHP版本的情况,找到相应的信息就知道下载那个版本的扩展了。

rb5

原本以为到这里,我已经彻底搞定了这个扩展的安装,但是当我重新启动WEB服务器的时候,发现了一个致命的问题,就是WEB服务器无法正常启动,于是又开始了各种探索,最后发现,需要将rabbitmq.4.dll文件放在PHP安装的根目录下面,也就是在Windows环境下面,将这个文件拷贝到与php.ini同目录里面,而这个文件来自于上面扩展的解压。

rb6

到这里,已经彻底搭建完PHP版的RabbitMQ开发环境,接下来进行的一件激动人心的事情就是,进行我的MQ开发实践之旅。

一些基本的概念

  • 消息生产者:就是提供消息的一方,这一方主要是面向业务或者用户的一方。
  • 消息消费者:就是接收消息并进行处理的一方,这一方一般都是在后端轮询的运行着,时刻准备接收新的消息并处理。
  • 信道(Channel):用一个形象的比喻就是,有了光纤,我们能够在光纤上进行打座机电话、看电视、上网等等,一个链接能够提供多种方式的通讯。
  • 消息队列(Message Queue):就是RabbitMQ对消息生产者生产的消息进行一定的排队从而形成队列以供消费者处理。
  • 消息队列创建者:消息队列是由消费者申请创建的,因为只有消费者知道怎么处理消息,而不是消息生产者创建的。
  • 消息路由转发:一个消费者可能会申请创建多个消息队列,那么生产者的消息应该传递到那个队列呢?这主要由Exchange来进行指定。

rb7

进行第一个PHP版Demo

消费者端: server.php

lv8

生产者端:client.php

lv9

开启RabbitMQ服务程序,并查看日志

lv10

看看上面的日志,已经将相关的数据保存到文件里面了,成功完成我的第一次RabbitMQ之旅。

posted @ 2018-02-22 09:11  静心聆听  阅读(184)  评论(0编辑  收藏  举报