RabbitMQ : PHP から利用する2016/09/03 |
RabbitMQ を PHP から利用する例です。
|
|
[1] | 事前に必要なパッケージをインストールしておきます。 |
# EPELからインストール [root@dlp ~]# yum --enablerepo=epel -y install composer php-bcmath
|
[2] | アプリケーションを作成する任意のユーザーで作業します。 事前に AMQP クライアントライブラリをインストールしておきます。 |
[cent@dlp ~]$ composer require php-amqplib/php-amqplib Using version ^2.6 for php-amqplib/php-amqplib ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) - Installing php-amqplib/php-amqplib (v2.6.3) Downloading: 100% Writing lock file Generating autoload files[cent@dlp ~]$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update Generating autoload files |
[3] | PHP スクリプトからのメッセージ送信例です。 例として RabbitMQ ユーザー「serverworld」, バーチャルホスト「my_vhost」へ接続して利用します。 |
[cent@dlp ~]$
vi send_msg.php <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; $connection = new AMQPStreamConnection('127.0.0.1', 5672, 'serverworld', 'password', '/my_vhost'); $channel = $connection->channel(); $channel->queue_declare('Hello_World', false, false, false, false); $msg = new AMQPMessage('Hello RabbitMQ World!'); $channel->basic_publish($msg, '', 'Hello_World'); echo " [x] Sent 'Hello_World'\n"; $channel->close(); $connection->close(); ?> php send_msg.php [x] Sent 'Hello_World' |
[4] | PHP スクリプトからのメッセージ受信例です。 例として、上記 [2] で送信したメッセージを受信します。 |
[cent@node01 ~]$
vi receive_msg.php <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; $connection = new AMQPStreamConnection('127.0.0.1', 5672, 'serverworld', 'password', '/my_vhost'); $channel = $connection->channel(); $channel->queue_declare('Hello_World', false, false, false, false); echo ' [*] Waiting for messages. To exit press CTRL+C', "\n"; $callback = function($msg) { echo " [x] Received ", $msg->body, "\n"; }; $channel->basic_consume('Hello_World', '', false, true, false, false, $callback); while(count($channel->callbacks)) { $channel->wait(); } ?> php receive_msg.php [*] Waiting for messages. To exit press CTRL+C [x] Received Hello RabbitMQ World! |
Sponsored Link |