rabbitmqの使い方
概要
- 役割
- メッセージブローカ
- メッセージキュー
- タスクキュー
- GCPのcloud pub/subに相当する
- 関数のcallbackで呼び出す点も似ている
インストール
ubuntu
$ sudo apt install rabbitmq-server
pythonによる例
ライブラリ
$ python3 -m pip install pika
pub
import pika
with pika.BlockingConnection(pika.ConnectionParameters('localhost')) as connection:
channel = connection.channel()
channel.queue_declare(queue='example_queue') # キューを作成
channel.basic_publish(exchange='',
routing_key='example_queue',
body='Hello World!') # メッセージの送信
print("Sent 'Hello World!'")
sub
import pika
import sys
import os
# サブスクリプションしてイベントを受け取ったとき、呼ばれる関数を定義
def callback(ch, method, properties, body):
print("Received %r" % body)
def main():
with pika.BlockingConnection(pika.URLParameters('amqp://localhost')) as connection:
channel = connection.channel()
channel.queue_declare(queue='example_queue')
# メッセージを受け取ったときのコールバックを設定
channel.basic_consume(queue='example_queue', on_message_callback=callback, auto_ack=True)
# consumingを開始
channel.start_consuming()
if __name__ == '__main__':
main()