手把手教你搭建PHP版RabbitMQ消息隊列開發(fā)環(huán)境及Demo實踐
原創(chuàng)【51CTO.com原創(chuàng)稿件】面對一些響應(yīng)不及時、耗時的業(yè)務(wù)場景,我們除了可以使用多線程或者多進程的方式來處理,以提高程序的響應(yīng)速度,同時,隨著消息隊列越來越成熟,以RabbitMQ為主的高級消息隊列逐漸的走入我們程序員的世界,它也能夠勝任這些場景,今天我們就來聊聊PHP版的RabbitMQ。
本機系統(tǒng)環(huán)境情況
PHP:PHP 7.1.2
web服務(wù)器:Apache
數(shù)據(jù)庫:MySQL
操作系統(tǒng):Win7 64位
安裝RabbitMQ服務(wù)端
由于RabbitMQ是基于Erlang的,所以***步需要先去安裝,而目前OS是Win7,所以打開Erlang的官方網(wǎng)站,找到對應(yīng)操作系統(tǒng)的版本下載并安裝就可以了,由于是exe文件,我們直接點下一步下一步等就能夠完成Erlang的安裝。
接下來安裝RabbitMQ,同樣打開其官方網(wǎng)站,我們也能夠看到該軟件提供了各種操作系統(tǒng)版本,我們選擇相應(yīng)的版本進行下載并安裝就可以了,這里是exe文件,所以還是只需要點擊下一步下一步等就完成了。
安裝PHP RabbitMQ擴展
首先打開php的官方擴展庫PECL網(wǎng)站,找到AMQP(高級消息隊列協(xié)議)擴展,為什么這樣呢?因為AMQP擴展是一個能夠與所有兼容AMQP協(xié)議的服務(wù)程序進行通訊,而RabbitMQ就是兼容AMQP的協(xié)議。
打開AMQP我們能夠看到,它有windows擴展(dll),但是當(dāng)下載的時候,我們發(fā)現(xiàn)有很多版本,即線程安全和非線程安全、64位和32位的版本,這個時候怎么辦呢?
不知道你是否過去從PHP官方下載PHP進行安裝的經(jīng)歷沒有,其實從官方網(wǎng)站下載PHP的時候,就有上面的上面線程安全和非線程安全等,也就是說,其實相應(yīng)的PECL擴展必須和你的PHP版本相對應(yīng),否則,你的擴展會報錯無法使用,于是我們用phpinfo就能夠看到我們目前的PHP版本的情況,找到相應(yīng)的信息就知道下載那個版本的擴展了。
原本以為到這里,我已經(jīng)徹底搞定了這個擴展的安裝,但是當(dāng)我重新啟動WEB服務(wù)器的時候,發(fā)現(xiàn)了一個致命的問題,就是WEB服務(wù)器無法正常啟動,于是又開始了各種探索,***發(fā)現(xiàn),需要將rabbitmq.4.dll文件放在PHP安裝的根目錄下面,也就是在Windows環(huán)境下面,將這個文件拷貝到與php.ini同目錄里面,而這個文件來自于上面擴展的解壓。
到這里,已經(jīng)徹底搭建完P(guān)HP版的RabbitMQ開發(fā)環(huán)境,接下來進行的一件激動人心的事情就是,進行我的MQ開發(fā)實踐之旅。
一些基本的概念
- 消息生產(chǎn)者:就是提供消息的一方,這一方主要是面向業(yè)務(wù)或者用戶的一方。
- 消息消費者:就是接收消息并進行處理的一方,這一方一般都是在后端輪詢的運行著,時刻準備接收新的消息并處理。
- 信道(Channel):用一個形象的比喻就是,有了光纖,我們能夠在光纖上進行打座機電話、看電視、上網(wǎng)等等,一個鏈接能夠提供多種方式的通訊。
- 消息隊列(Message Queue):就是RabbitMQ對消息生產(chǎn)者生產(chǎn)的消息進行一定的排隊從而形成隊列以供消費者處理。
- 消息隊列創(chuàng)建者:消息隊列是由消費者申請創(chuàng)建的,因為只有消費者知道怎么處理消息,而不是消息生產(chǎn)者創(chuàng)建的。
- 消息路由轉(zhuǎn)發(fā):一個消費者可能會申請創(chuàng)建多個消息隊列,那么生產(chǎn)者的消息應(yīng)該傳遞到那個隊列呢?這主要由Exchange來進行指定。
進行***個PHP版Demo
消費者端: server.php
生產(chǎn)者端:client.php
開啟RabbitMQ服務(wù)程序,并查看日志
看看上面的日志,已經(jīng)將相關(guān)的數(shù)據(jù)保存到文件里面了,成功完成我的***次RabbitMQ之旅。
歡迎留言評論,也可以加Q群討論(群號542270018)
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】