RabbitMQ
RabbitMQ はメッセージを仲介するメッセージングブローカーです。メッセージを送受信したりするための共通プラットフォームとしてメッセージが受け取られるまで安全な場所に保管することができます。
目次
インストール
設定
設定は不要です。rabbitmq
サービスを起動してください。
デフォルトの設定ファイルは /etc/rabbitmq/rabbitmq-env.conf
に存在します。設定に関する詳細は 公式ドキュメント を読んでください。
MQTT の有効化
RabbitMQ は MQTT サーバーとして使えます。機能させるには以下のようにプラグインをインストールする必要があります:
$ sudo -u rabbitmq rabbitmq-plugins enable rabbitmq_mqtt
インストールしたら RabbitMQ サービスを再起動して変更を適用してください。
トピックに投稿する前にクライアントを認証する必要があります。RabbitMQ はバーチャルホストによってトラフィックを分離するため、ユーザー名を `your_user_name:configured_vhost_name` として認証を行ってください。
HTTP 管理の有効化
HTTP 管理ページを有効にするには:
rabbitmq-plugins enable rabbitmq_management
<ip_address_of_host>:15672
から管理することができます。デフォルトのログイン情報は username:guest password:guest
です。
リモートマシンから HTTP 管理ページに接続できるようにするには /etc/rabbitmq/rabbitmq.config
を作成・編集:
[{rabbit, [{loopback_users, []}]}].
トラブルシューティング
ホストネームの変更
rabbitmq をインストールした後にホストネームを変更した場合、起動できなくなります。/etc/rabbitmq/rabbitmq-env.conf
に記述されている NODENAME
が原因です。新しいホストネームにあわせて変更してください:
/etc/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit@my-new-hostname ...
RabbitMQ を最新版にアップグレードしたら起動できない
/etc/rabbitmq/rabbitmq-env.conf
の NODENAME
が間違っているのが原因です。例えば @hostname
が追加されてしまうことがあります。ホストネームの変更のときと同じようにすることで解決できます。
Erlang の cookie エラー
rabbitmq の HOME 設定が間違っていると認証に失敗することがあります:
Authentication failed (rejected by the remote node), please check the Erlang cookie ... home dir: /root
HOME は設定ファイルで設定できます:
/etc/rabbitmq/rabbitmq-env.conf
... HOME=/var/lib/rabbitmq ...
can't establish TCP connection
TCP 接続を確立できないというエラーが表示される場合、/etc/hosts
に記述されているホストネームのエントリが /etc/rabbitmq/rabbitmq-env.conf
に書いた IP アドレスと一致しているか確認してください (rabbitmq を特定のインターフェイスにバインドするよう設定した場合によく発生するエラーです)。
参照
- erlang kernel parameters - 高度な設定のカーネルパラメータ
- rabbitmq.config example - rabbitmq.config のサンプル (rabbitmq パッケージには含まれていません)