RabbitMQ
UCIDM は API サーバーで受け取った ID 連携の情報を RabbitMQ を経由して複数の外部連携先に送ります。
Docker Compose の設定
RabbitMQ はコンテナとして稼働させます。次のように compose.yml
に設定します。
rabbitmq:
container_name: rabbitmq
hostname: rabbitmq
image: docker.io/library/rabbitmq:4.0.3-management
logging: *default-logging
environment:
RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}"
RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASSWORD}"
ports:
- 127.0.0.1:15672:15672
volumes:
- type: bind
source: ./rabbitmq/rabbitmq.conf
target: /etc/rabbitmq/rabbitmq.conf
read_only: true
bind:
create_host_path: false
- type: bind
source: ./rabbitmq-data
target: /var/lib/rabbitmq
bind:
create_host_path: true
restart: "always"
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 60s
timeout: 5s
retries: 3
start_period: 30s
start_interval: 5s
ここで参照する環境変数は .env
に設定します。
環境変数の設定
環境変数 | 値 | 説明 |
---|---|---|
RABBITMQ_DEFAULT_USER | 任意 | 初期化時に作成する RabbitMQ のユーザ名 |
RABBITMQ_DEFAULT_PASS | 任意 | 初期化時に作成する RabbitMQ のパスワード |
RabbitMQ の管理
RabbitMQ サービスを起動した後の Exchange や Queue を管理するための機能を紹介します。UCIDM API サーバーが起動するときに自動的に初期設定は行うため、とくに管理のための設定を行う必要はありません。しかし、メッセージング機能のカスタマイズやトラブルシューティングのときにこれらの管理機能を使うと便利です。
mqadmin を使う
環境変数を誤って書き換えてしまわないよう、Docker Compose を操作している端末とは別の端末で作業することをお奨めします。環境変数を設定するサンプルファイルをコピーして編集します。
$ cp /opt/osstech/share/ucidm/exports-mqadmin.sh .
$ vi exports-mqadmin.sh
AMQP_URL という環境変数を設定します。
# rabbitmq の接続 URI
export AMQP_URL="amqp://${ユーザー}:${パスワード}@localhost:5672/"
# rabbitmq の management plugin のポート番号
export MQADMIN_PORT=15672
設定した環境変数を source コマンドで読み込みます。
$ source exports-mqadmin.sh
Exchange の情報を取得してみましょう。次のように表示されれば成功です。
$ /opt/osstech/bin/mqadmin get-exchange -name ucidm
time=2023-04-22T06:31:47.693Z level=INFO msg="got the given exchange" name=ucidm
{
"name": "ucidm",
"vhost": "/",
"type": "direct",
"durable": true,
"auto_delete": false,
"internal": false,
"arguments": {},
"incoming": [],
"outgoing": [],
"message_stats": {},
"bindings": [
{
"source": "ucidm",
"vhost": "/",
"destination": "local-001",
"destination_type": "queue",
"routing_key": "local-001",
"arguments": {},
"properties_key": "local-001"
}
]
}
AMQP_URL の環境変数を削除するには次のように実行します。
$ unset AMQP_URL
RabbitMQ の管理画面を使う
localhost:15672 にアクセスします (ここでは接続先を localhost として説明しますが、適宜、お客様の環境にあわせてください) 。次のように管理画面へのログインページが表示されます。
前節の環境変数で設定したユーザー名とパスワードを使ってログインします。