首頁常見問題正文

RabbitMQ有幾種廣播類型?

更新時間:2023-05-11 來源:黑馬程序員 瀏覽量:

IT培訓班

  RabbitMQ是一個功能強大的消息隊列中間件,支持多種消息廣播類型。常見的幾種廣播類型包括:Direct Exchange、Fanout Exchange、Topic Exchange 和 Headers Exchange。

  下面是一個基于Python的RabbitMQ代碼演示,展示如何使用Fanout Exchange實現(xiàn)消息廣播:

  首先,安裝pika庫:

pip install pika

  然后,創(chuàng)建一個名為broadcast.py的Python文件,代碼如下:

import pika
import sys

# 建立連接
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

# 創(chuàng)建一個Fanout Exchange
channel.exchange_declare(exchange='logs', exchange_type='fanout')

# 構造消息內容
message = ' '.join(sys.argv[1:]) or "Hello World!"

# 發(fā)布消息到Exchange
channel.basic_publish(exchange='logs', routing_key='', body=message)

print(" [x] Sent %r" % message)

# 關閉連接
connection.close()

  在上面的代碼中,我們首先建立了一個與RabbitMQ服務器的連接,并創(chuàng)建了一個名為logs的Fanout Exchange。然后,我們構造了一個消息內容,并將其發(fā)布到Exchange中。

  我們可以使用命令行運行此腳本,并在命令行參數(shù)中傳遞消息內容,例如:

python broadcast.py "This is a broadcast message."

  這樣,RabbitMQ服務器將會廣播這條消息給所有已經綁定到logs Exchange的隊列。

  下面是一個基于Python的RabbitMQ代碼演示,展示如何使用Topic Exchange實現(xiàn)消息廣播:

import pika
import sys

# 建立連接
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

# 創(chuàng)建一個Topic Exchange
channel.exchange_declare(exchange='logs_topic', exchange_type='topic')

# 構造消息內容
message = ' '.join(sys.argv[2:]) or "Hello World!"
routing_key = sys.argv[1] if len(sys.argv) > 1 else 'anonymous.info'

# 發(fā)布消息到Exchange
channel.basic_publish(exchange='logs_topic', routing_key=routing_key, body=message)

print(" [x] Sent %r:%r" % (routing_key, message))

# 關閉連接
connection.close()

  在上面的代碼中,我們創(chuàng)建了一個名為logs_topic的Topic Exchange,并構造了一個消息內容和一個routing key。routing key是一個用于匹配隊列的關鍵字。在Topic Exchange中,routing key可以是一個由點號分隔的單詞列表。例如,"stock.usd.nyse"是一個有效的routing key。

  我們可以使用命令行運行此腳本,并在命令行參數(shù)中傳遞routing key和消息內容,例如:

python broadcast_topic.py "anonymous.info" "This is a broadcast message."

  這樣,RabbitMQ服務器將會廣播這條消息給所有已經綁定到與該routing key匹配的logs_topic Exchange的隊列。

分享到:
在線咨詢 我要報名
和我們在線交談!