首頁常見問題正文

RabbitMQ有幾種廣播類型?

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

IT培訓(xùn)班

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

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

  首先,安裝pika庫(kù):

pip install pika

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

import pika
import sys

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

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

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

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

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

# 關(guān)閉連接
connection.close()

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

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

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

  這樣,RabbitMQ服務(wù)器將會(huì)廣播這條消息給所有已經(jīng)綁定到logs Exchange的隊(duì)列。

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

import pika
import sys

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

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

# 構(gòu)造消息內(nèi)容
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))

# 關(guān)閉連接
connection.close()

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

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

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

  這樣,RabbitMQ服務(wù)器將會(huì)廣播這條消息給所有已經(jīng)綁定到與該routing key匹配的logs_topic Exchange的隊(duì)列。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!