社区编辑申请
注册/登录
手把手教你搭建PHP版RabbitMQ消息队列开发环境及Demo实践 原创
移动开发
面对一些响应不及时、耗时的业务场景,我们除了可以使用多线程或者多进程的方式来处理,以提高程序的响应速度,同时,随着消息队列越来越成熟,以RabbitMQ为主的高级消息队列逐渐的走入我们程序员的世界,它也能够胜任这些场景,今天我们就来聊聊PHP版的RabbitMQ。

【51CTO.com原创稿件】面对一些响应不及时、耗时的业务场景,我们除了可以使用多线程或者多进程的方式来处理,以提高程序的响应速度,同时,随着消息队列越来越成熟,以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之旅。

欢迎留言评论,也可以加Q群讨论(群号542270018)

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:何星 来源: 51CTO
相关推荐

2022-04-12 11:15:31

Redis消息队列数据库

2022-04-07 15:28:16

HarmonyOS鸿蒙操作系统

2022-04-14 11:35:01

HarmonyOS手表Demo操作系统

2022-04-06 11:27:05

harmonyeTS 开发NAPI开发

2022-04-02 14:02:23

WindowsRedis 6.xredis

2022-04-02 20:11:50

智慧交通灯鸿蒙操作系统

2022-04-21 14:29:40

前端文件预览

2022-03-22 15:04:20

中间件分布式软件鸿蒙

2022-04-01 20:29:26

Pandas数据存储

2022-02-10 15:32:20

2022-04-14 10:24:27

分布式系统性能

2022-03-08 11:17:54

函数指针回调函数C语言

2022-02-25 07:34:36

MQTT协议RabbitMQ

2022-04-09 09:11:33

Python

2022-03-10 09:00:37

2022-01-25 17:05:44

2022-03-18 09:11:56

高并发抢购系统架构

2020-01-15 08:52:40

RabbitMQSpringMybatis

2021-12-02 10:25:25

2021-06-29 12:27:19

同话题下的热门内容

苹果 iOS 15.5 正式版发布,一文看懂都更新了啥苹果关闭验证通道:iOS 15.5升级后无法降级淘宝Native研发模式的演进与思考移动端日历组件设计与实现Android 13 将默认采用华为开发的只读文件系统iOS 16,为颠覆而来?聊聊 Swift 中的类型占位符微信升级新功能:我的三年老手机不卡了!

编辑推荐

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?初学者最容易学的六种编程语言CVPR 2017论文解读:特征金字塔网络FPN手把手教你搭建PHP版RabbitMQ消息队列开发环境及Demo实践微信小程序“反编译”实战(一):解包
我收藏的内容
点赞
收藏

51CTO技术栈公众号