RabbitMQのインストール方法
Dockerを使用したインストール
Dockerがインストール済みの環境においては、以下のdocker-compose.ymlファイルを作成することでRabbitMQを簡単にセットアップできます。
version: '3'
services:
rabbitmq:
image: rabbitmq:3.7.7-management-alpine
hostname: myrabbitmq
ports:
- "5672:5672"
- "15672:15672"
作成後、以下のコマンドでコンテナを起動します。
docker-compose up -d rabbitmq
brewを使用したインストール
Homebrewを利用したインストールも可能です。
brew install rabbitmq
インストール後、サービスが起動していない場合は以下でサービスを開始してください。
brew services start rabbitmq
Web管理画面はhttp://127.0.0.1:15672にアクセスし、デフォルトのユーザ名・パスワードはguest/guestです。
PHP用AMQP拡張のインストール
RabbitMQと連携するためにはphp-amqp拡張が必要です。まず依存ライブラリをインストールします。
brew install rabbitmq-c
次にPECLから拡張をダウンロードして展開し、以下のようにビルドします。
curl 'http://pecl.php.net/get/amqp-1.9.3.tgz' -o amqp-1.9.3.tgz
phpize
./configure --with-php-config=/usr/local/Cellar/php@5.6/5.6.39/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/Cellar/rabbitmq-c/0.9.0
make && make install
作成された.soファイルをphp.iniに追加し、php-fpmとnginxを再起動します。
PHPによるメッセージ送受信の実装
以下のcomposer.jsonで必要ライブラリをインストールします。
{
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
}
}
composer install
メッセージ受信処理
以下のコードでメッセージを待ち受けます。
channel();
$channel->queue_declare('hello', false, false, false, false);
echo " [*] メッセージ受信待機中. 終了するにはCTRL+Cを押してください\n";
$callback = function ($msg) {
echo ' [x] 受信: ', $msg->body, "\n";
};
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while ($channel->is_consuming()) {
$channel->wait();
}
$channel->close();
$connection->close();
メッセージ送信処理
以下は10回のメッセージを送信するコードです。
channel();
$channel->queue_declare('hello', false, false, false, false);
for ($i = 0; $i < 10; $i++) {
$messageBody = 'Hello World! 現在時刻: ' . date("H:i:s", time()) . " [" . $i . "]";
$msg = new AMQPMessage($messageBody);
$channel->basic_publish($msg, '', 'hello');
echo $messageBody . "\n";
}
$channel->close();
$connection->close();
実行手順
- 受信側を先に実行:
php receive.php - 送信側を実行:
php send.php