Python rabbitMQ如何實(shí)現(xiàn)生產(chǎn)消費(fèi)者模式
(一)安裝一個(gè)消息中間件,如:rabbitMQ
(二)生產(chǎn)者
sendmq.py
import pika
import sys
import time
# 遠(yuǎn)程rabbitmq服務(wù)的配置信息
username = 'admin' # 指定遠(yuǎn)程rabbitmq的用戶名密碼
pwd = 'admin'
ip_addr = '10.1.7.7'
port_num = 5672
# 消息隊(duì)列服務(wù)的連接和隊(duì)列的創(chuàng)建
credentials = pika.PlainCredentials(username, pwd)
connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))
channel = connection.channel()
# 創(chuàng)建一個(gè)名為balance的隊(duì)列,對(duì)queue進(jìn)行durable持久化設(shè)為True(持久化第一步)
channel.queue_declare(queue='balance', durable=True)
message_str = 'Hello World!'
for i in range(100000000):
# n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
channel.basic_publish(
exchange='',
routing_key='balance', # 寫明將消息發(fā)送給隊(duì)列balance
body=message_str, # 要發(fā)送的消息
properties=pika.BasicProperties(delivery_mode=2, ) # 設(shè)置消息持久化(持久化第二步),將要發(fā)送的消息的屬性標(biāo)記為2,表示該消息要持久化
) # 向消息隊(duì)列發(fā)送一條消息
print(" [%s] Sent 'Hello World!'" % i)
# time.sleep(0.2)
connection.close() # 關(guān)閉消息隊(duì)列服務(wù)的連接
運(yùn)行sendmq.py文件,可以從以下方法查看隊(duì)列中的消息數(shù)量。
一是,rabbitmq的管理界面,如下圖所示:

二是,從服務(wù)器端命令查看
rabbitmqctl list_queues

(三)消費(fèi)者
receivemq.py
import pika
import sys
import time
# 遠(yuǎn)程rabbitmq服務(wù)的配置信息
username = 'admin' # 指定遠(yuǎn)程rabbitmq的用戶名密碼
pwd = 'admin'
ip_addr = '10.1.7.7'
port_num = 5672
credentials = pika.PlainCredentials(username, pwd)
connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))
channel = connection.channel()
# 消費(fèi)成功的回調(diào)函數(shù)
def callback(ch, method, properties, body):
print(" [%s] Received %r" % (time.time(), body))
# time.sleep(0.2)
# 開始依次消費(fèi)balance隊(duì)列中的消息
channel.basic_consume(queue='balance', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming() # 啟動(dòng)消費(fèi)
運(yùn)行receivemq.py文件,可以從以下方法查看隊(duì)列中的消息數(shù)量。

或者
rabbitmqctl list_queues
延伸:
systemctl status rabbitmq-server.service # 狀態(tài)
systemctl restart rabbitmq-server.service # 重啟
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何在PyCharm中配置使用Anaconda環(huán)境
這篇文章主要介紹了如何在PyCharm中配置使用Anaconda環(huán)境,圖文講解寫的非常詳細(xì)簡(jiǎn)單易懂,還不會(huì)的小伙伴快來看看吧2023-03-03
從運(yùn)行效率與開發(fā)效率比較Python和C++
今天小編就為大家分享一篇關(guān)于從運(yùn)行效率與開發(fā)效率比較Python和C++,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
Python基于爬蟲實(shí)現(xiàn)全網(wǎng)搜索并下載音樂
這篇文章主要介紹了Python基于爬蟲實(shí)現(xiàn)全網(wǎng)搜索并下載音樂的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02
使用rpclib進(jìn)行Python網(wǎng)絡(luò)編程時(shí)的注釋問題
這篇文章主要介紹了使用rpclib進(jìn)行Python網(wǎng)絡(luò)編程時(shí)的注釋問題,作者講到了自己在編寫服務(wù)器時(shí)要用unicode注釋等需要注意的地方,需要的朋友可以參考下2015-05-05
Python面向?qū)ο蟪绦蛟O(shè)計(jì)OOP入門教程【類,實(shí)例,繼承,重載等】
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)OOP入門教程,較為詳細(xì)的分析了Python面向?qū)ο箢?實(shí)例,繼承,重載等相關(guān)概念與使用技巧,需要的朋友可以參考下2019-01-01
Flask與FastAPI對(duì)比選擇最佳Python?Web框架的超詳細(xì)指南
Flask和FastAPI都是流行的Python?Web框架,各有特點(diǎn),Flask輕量級(jí)、靈活,適合小型項(xiàng)目和原型開發(fā)但不支持異步操作,FastAPI高性能、支持異步,內(nèi)置數(shù)據(jù)驗(yàn)證和自動(dòng)生成API文檔,適合高并發(fā)和API開發(fā),需要的朋友可以參考下2025-02-02
python反射機(jī)制內(nèi)置函數(shù)及場(chǎng)景構(gòu)造詳解
這篇文章主要為大家介紹了python反射機(jī)制內(nèi)置函數(shù)及場(chǎng)景構(gòu)造示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

