Python rabbitMQ如何實現生產消費者模式
阿新 • • 發佈:2020-08-26
(一)安裝一個訊息中介軟體,如:rabbitMQ
(二)生產者
sendmq.py
import pika import sys import time # 遠端rabbitmq服務的配置資訊 username = 'admin' # 指定遠端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() # 建立一個名為balance的佇列,對queue進行durable持久化設為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',# 寫明將訊息傳送給佇列balance body=message_str,# 要傳送的訊息 properties=pika.BasicProperties(delivery_mode=2,) # 設定訊息持久化(持久化第二步),將要傳送的訊息的屬性標記為2,表示該訊息要持久化 ) # 向訊息佇列傳送一條訊息 print(" [%s] Sent 'Hello World!'" % i) # time.sleep(0.2) connection.close() # 關閉訊息佇列服務的連線
執行sendmq.py檔案,可以從以下方法檢視佇列中的訊息數量。
一是,rabbitmq的管理介面,如下圖所示:
二是,從伺服器端命令檢視
rabbitmqctl list_queues
(三)消費者
receivemq.py
import pika import sys import time # 遠端rabbitmq服務的配置資訊 username = 'admin' # 指定遠端rabbitmq的使用者名稱密碼 pwd = 'admin' ip_addr = '10.1.7.7' port_num = 5672 credentials = pika.PlainCredentials(username,credentials)) channel = connection.channel() # 消費成功的回撥函式 def callback(ch,method,properties,body): print(" [%s] Received %r" % (time.time(),body)) # time.sleep(0.2) # 開始依次消費balance佇列中的訊息 channel.basic_consume(queue='balance',on_message_callback=callback,auto_ack=True) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming() # 啟動消費
執行receivemq.py檔案,可以從以下方法檢視佇列中的訊息數量。
或者
rabbitmqctl list_queues
延伸:
systemctl status rabbitmq-server.service # 狀態
systemctl restart rabbitmq-server.service # 重啟
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。