歡迎關注【無量測試之道】公眾號,回復【領取資源】,
Python編程學習資源干貨、
Python+Appium框架APP的UI自動化、
Python+Selenium框架Web的UI自動化、
Python+Unittest框架API自動化、
資源和代碼 免費送啦~
文章下方有公眾號二維碼,可直接微信掃一掃關注即可。
1、什么是Rabbitmq?
Rabbitmq是一個在AMQP基礎上完整的,可復用的企業消息系統。他遵循Mozilla Public License開源協議。
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消 息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。
通俗點來講:把Rabbitmq想象成一個郵局,當你把你想要發布的郵件放在郵箱中時,你可以確定郵差先生最終將郵件發送給你的收件人。在這個比喻中,Rabbitmq是郵政信箱,郵局和郵遞員。
消息發送的示意圖:
2、如何搭建一個Rabbitmq服務?
step1:檢索rabbitmq 鏡像
docker search rabbitmq
step2:下載rabbitmq 鏡像
docker pull rabbitmq:management
step3: 啟動rabbitmq 容器
docker run -d -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 15672:15672 -p 5672:5672 rabbitmq:management
step4: 登錄瀏覽器查看mq服務是否正常
3、創建一個虛擬主機
創建一個虛擬主機( virtual hosts,系統默認會創建一個/) 並且給guest 賬號賦上權限(此步驟可省略)
如果需要手動創建的話,需要單獨創建並且賦權限給guest賬號。
4、Rabbitmq 發消息簡單模式
step1:獲取Rabbitmq服務的連接
step2:創建一個信道
step3:聲明一個隊列
step4:向列表存放消息
step5:關閉連接
具體代碼如下:
1 import json 2 import pika 3 import datetime 4 5 #生成消息入口處 6 def get_message(): 7 for i in range(10): #生成10條消息 8 message=json.dumps({'id': "10000%s" % i, "amount": 100 * i,"name":"tony","createtime":str(datetime.datetime.now())}) 9 producter(message) 10 11 #消息生產者 12 13 def producter(message):#消息生產者 14 # 獲取與rabbitmq 服務的連接,虛擬隊列需要指定參數 virtual_host,如果是默認的可以不填(默認為/),也可以自己創建一個 15 connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1', port=5672,credentials=pika.PlainCredentials('guest', 'guest'))) 16 #創建一個 AMQP 信道(Channel),建造一個大郵箱,隸屬於這家郵局的郵箱 17 channel = connection.channel() 18 # 聲明消息隊列tester,消息將在這個隊列傳遞,如不存在,則創建 19 channel.queue_declare(queue='tester') 20 # 向隊列插入數值 routing_key的隊列名為tester,body 就是放入的消息內容,exchange指定消息在哪個隊列傳遞,這里是空的exchange但仍然能夠發送消息到隊列中,因為我們使用的是我們定義的空字符串“”exchange(默認的exchange) 21 channel.basic_publish(exchange='', routing_key='tester', body=message) 22 # 關閉連接 23 connection.close() 24 25 if __name__=="__main__": 26 get_message()#程序執行入口
5、檢查mq中tester隊列中是否產生了10條消息記錄
如下截圖所示:
備注:我的個人公眾號已正式開通,致力於測試技術的分享,包含:大數據測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜索公眾號:“無量測試之道”,或掃描下方二維碼:
添加關注,一起共同成長吧。