1. 程式人生 > 程式設計 >Python rabbitMQ如何實現生產消費者模式

Python rabbitMQ如何實現生產消費者模式

(一)安裝一個訊息中介軟體,如: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的管理介面,如下圖所示:

Python rabbitMQ如何實現生產消費者模式

二是,從伺服器端命令檢視

rabbitmqctl list_queues

Python rabbitMQ如何實現生產消費者模式

(三)消費者

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檔案,可以從以下方法檢視佇列中的訊息數量。

Python rabbitMQ如何實現生產消費者模式

或者

rabbitmqctl list_queues

延伸:

systemctl status rabbitmq-server.service # 狀態
systemctl restart rabbitmq-server.service # 重啟

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。