Fanout Exchangeは、メッセージを受け取るすべてのキューにメッセージをブロードキャストするために使用されます。キューはFanout Exchangeにバインドされ、Exchangeに送信されたメッセージはすべてのバインドされたキューに配信されます。
以下に、Fanout Exchangeの使用方法とコード例を示します。
- Fanout Exchangeの作成とバインド
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# Fanout Exchangeの作成
channel.exchange_declare(exchange='my_fanout_exchange', exchange_type='fanout')
# キューの作成
channel.queue_declare(queue='queue1')
channel.queue_declare(queue='queue2')
# Fanout Exchangeにキューをバインド
channel.queue_bind(exchange='my_fanout_exchange', queue='queue1')
channel.queue_bind(exchange='my_fanout_exchange', queue='queue2')
connection.close()
- メッセージのパブリッシュ
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# Fanout Exchangeにメッセージをパブリッシュ
channel.basic_publish(exchange='my_fanout_exchange', routing_key='', body='Hello World!')
connection.close()
- メッセージのサブスクライブ
import pika
def callback(ch, method, properties, body):
print("Received message: %r" % body)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# キューにコールバック関数を設定してメッセージをサブスクライブ
channel.basic_consume(queue='queue1', on_message_callback=callback, auto_ack=True)
# メッセージの待機と処理を開始
channel.start_consuming()
connection.close()
これらのコード例では、Fanout Exchangeを作成し、2つのキューにバインドしています。パブリッシャーはFanout Exchangeにメッセージを送信し、サブスクライバーは各キューからメッセージを受信します。
このように、Fanout Exchangeを使用することで、1つのメッセージを複数のキューに同時に配信することができます。
以上がRabbitMQのFanout Exchangeの基本的な使い方とコード例です。Fanout Exchangeを使用することで、アプリケーション間のメッセージングを柔軟かつ効率的に実現することができます。