CentOS 7
Sponsored Link

RabbitMQ : Python から利用する
2016/09/03
 
RabbitMQ を Python から利用する例です。
[1] AMQP クライアントライブラリをインストールしておきます。
# EPELからインストール

[root@dlp ~]#
yum --enablerepo=epel -y install python2-pika
[2] Python スクリプトからのメッセージ送信例です。
アプリケーションを作成する任意のユーザーで作業します。
例として RabbitMQ ユーザー「serverworld」, バーチャルホスト「my_vhost」へ接続して利用します。
[cent@dlp ~]$
vi send_msg.py
#!/usr/bin/env python

import pika

credentials = pika.PlainCredentials('serverworld', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters(
                                     'localhost',
                                     5672,
                                     '/my_vhost',
                                     credentials))

channel = connection.channel()
channel.queue_declare(queue='Hello_World')

channel.basic_publish(exchange='',
                      routing_key='Hello_World',
                      body='Hello RabbitMQ World!')

print(" [x] Sent 'Hello_World'")

connection.close()

[cent@dlp ~]$
python send_msg.py

 [x] Sent 'Hello_World'
[3] Python スクリプトからのメッセージ受信例です。
例として、上記 [2] で送信したメッセージを受信します。
[cent@node01 ~]$
vi receive_msg.py
#!/usr/bin/env python

import signal
import pika

signal.signal(signal.SIGPIPE, signal.SIG_DFL)
signal.signal(signal.SIGINT, signal.SIG_DFL)

credentials = pika.PlainCredentials('serverworld', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters(
                                     'dlp.srv.world',
                                     5672,
                                     '/my_vhost',
                                     credentials))

channel = connection.channel()
channel.queue_declare(queue='Hello_World')

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

channel.basic_consume(callback,
                      queue='Hello_World',
                      no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

[cent@node01 ~]$
python receive_msg.py

 [*] Waiting for messages. To exit press CTRL+C
 [x] Received 'Hello RabbitMQ World!'
 
Tweet