REST APIの使い方〜RabbitMQ導入〜
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
このエントリはMagento Advent Calendar 2019の7日目です。
今回は前回紹介した「非同期・バルク処理API」を使うための準備について解説します。
RabbitMQをセットアップしよう
非同期・バルク処理APIを使用するためには、RabbitMQのセットアップが必要です。
RabbitMQはAdvanced Massage Queuing Protocol (AMQP)を使用したオープンソースのメッセージキューを扱うためのソフトウエアです。
LinuxディストリビューションによってRabbitMQのインストール方法は若干変わりますが、比較的新しいバージョンであればパッケージが用意されているため、簡単にインストールできます。
Ubuntu Linux 18.04 LTSの場合
Ubuntu Linux 18.04 LTSの場合、下記のコマンドだけでインストールできます。
apt install rabbitmq-server
CentOS 7の場合
CentOS 7の場合、RabbitMQがベースにしているErlangのインストールも必要です。
wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
Erlangがインストールできたら、RabbitMQをインストールします。
rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc yum install rabbitmq-server-3.5.6-1.noarch.rpm
無事にRabbitMQがインストールできたら、プロセスが起動していることを確認しておきましょう。
次に、RabbitMQのGUIをインストールしておきます。コマンドからでも操作はできますが、GUIがあるほうが視覚的に状況を確認しやすいと思います。
RabbitMQのGUIはプラグインの形で配布されています。Linuxディストリビューションによっては一緒にインストールしてくれるかもしれませんが、入っていない場合は下記のコマンドでインストールします。
rabbitmq-plugins enable rabbitmq_management
インストールできたら、 http://ホスト名:15672/ にアクセスして、RabbitMQのGUIがブラウザで見られることを確認しておきましょう。
次のような画面が表示されれば成功です。
管理者ユーザーの作成
最近のRabbitMQはインストール直後の状態では、セキュリティ上の理由からGUIへのアクセスが制限されています。
クライアントPCからアクセスができるように、以下のコマンドで管理ユーザーを作成しましょう。
- rabbitmqctl add_user ユーザー名 パスワード
- rabbitmqctl set_user_tags ユーザー名 administrator
- rabbitmqctl set_permissions -p / ユーザー名 ".*" ".*" ".*”
本当は3番めのコマンドでアクセスできるIPやネットワークを制限するべきなのですが、今回は省略します。
管理ユーザーを作成したら、RabbitMQにログインします。
次のようにログインできれば成功です。
Magento側の設定
続いてMagento側の設定を調整します。
RabbitMQへの接続設定はapp/etc/env.phpに記述する事になっているので、エディタでこのファイルを開き、以下の内容を追記します。
'queue' => [ 'amqp' => [ 'host' => ‘RabbitMQサーバーのホスト名 or IP', 'port' => '5672', 'user' => ‘RabbitMQのユーザー名', 'password' => 'RabbitMQのユーザーパスワード', 'virtualhost' => '/' ] ]
ファイルを保存したら、Magentoのキャッシュをクリアしておきます。
Cronジョブを実行して、MagentoとRabbitMQを接続する
最後にCronジョブを実行し、MagentoとRabbitMQが接続できるようにします。
すでにCronジョブの設定ができている場合は、しばらく待っているとプロセスが起動してきます。psコマンドで起動中のプロセスを表示させて、以下のようなプロセスが起動していれば成功です。
php /path/to/magento/bin/magento queue:consumers:stat (以下略)
というプロセスが起動していれば成功です。
あとはMagentoがRabbitMQに登録されているキューを自動的に拾い上げて実行してくれるようになります。
次回は実際に非同期・バルク処理APIを実行し、どういう結果が得られるかを解説します。
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)