Dev Services for RabbitMQ

Dev Services for RabbitMQは、開発モードやテストの実行時に自動的にRabbitMQブローカーを起動します。そのため、ブローカーを手動で起動する必要はありません。アプリケーションは自動的に設定されます。

Dev Services for RabbitMQの有効化/無効化

Dev Services for RabbitMQは、以下の条件が満たされない限り自動的に有効化されます。

  • quarkus.rabbitmq.devservices.enabled が false に設定されていること

  • rabbitmq-host または rabbitmq-port が設定されていること

  • すべてのReactive Messaging RabbitMQチャンネルに host または port の属性が設定されていること。

Dev Services for RabbitMQは、ブローカーの起動にDockerを使用しています。お使いの環境でDockerがサポートされていない場合は、ブローカーを手動で起動するか、すでに稼働しているブローカーに接続する必要があります。ブローカーのアクセスは、 rabbitmq-host 、 rabbitmq-port 、 rabbitmq-username 、 rabbitmq-password プロパティを使用して設定できます。

共有ブローカー

ほとんどの場合、アプリケーション間でブローカーを共有する必要があります。Dev Services for RabbitMQは、 開発 モードで動作する複数のQuarkusアプリケーションが1つのブローカーを共有するための サービスディスカバリー メカニズムを実装しています。

Dev Services for RabbitMQ starts the container with the quarkus-dev-service-rabbitmq label which is used to identify the container.

複数の(共有)ブローカーが必要な場合は、 quarkus.rabbitmq.devservices.service-name 属性を設定し、ブローカー名を示します。同じ値のコンテナを探し、見つからない場合は新しいコンテナを開始します。デフォルトのサービス名は rabbitmq です。

共有は、devモードではデフォルトで有効ですが、testモードでは無効です。 quarkus.rabbitmq.devservices.shared=false で共有を無効にすることが可能です。

ポートの設定

既定では、Dev Services for RabbitMQ はランダムなポートを選択し、アプリケーションを設定します。ポートを設定するには、 quarkus.rabbitmq.devservices.port プロパティを設定します。

イメージの設定

Dev Services for RabbitMQ は、 https://hub.docker.com/_/rabbitmq で入手できる公式イメージを使用しています。 quarkus.rabbitmq.devservices.image-name プロパティを使用して、イメージとバージョンを設定できます。

quarkus.rabbitmq.devservices.image-name=rabbitmq:latest

管理UIにアクセスする

デフォルトでは、Dev Services for RabbitMQは、 management タグの付いた公式イメージを使用します。これは、 管理プラグイン が利用可能であることを意味します。 Dev UI を使用してランダムに影響を受けるHTTPポートを見つけるか、 quarkus.rabbitmq.devservices.http-port から静的なポートを設定することができます。

定義済のトポロジー

Dev Services for RabbitMQは、ブローカーの起動時にトポロジーの定義をサポートしています。標準的なQuarkusの設定を使用して、Exchange、Queue、Bindingsを定義できます。

エクスチェンジの定義

RabbitMQエクスチェンジを定義するには、 quarkus.rabbitmq.devservices.exchanges キーの後にエクスチェンジの名前を指定し、続いてエクスチェンジのプロパティを1つ(または複数)指定します。

quarkus.rabbitmq.devservices.exchanges.my-exchange.type=topic            # defaults to 'direct'
quarkus.rabbitmq.devservices.exchanges.my-exchange.auto-delete=false     # defaults to 'false'
quarkus.rabbitmq.devservices.exchanges.my-exchange.durable=true          # defaults to 'false'

さらに、 arguments キーを使用して、エクスチェンジの定義に追加の引数を提供することができます。

quarkus.rabbitmq.devservices.exchanges.my-exchange.arguments.alternate-exchange=another-exchange

キューの定義

RabbitMQキューを定義するには、 quarkus.rabbitmq.devservices.queues キーの後にキューの名前を指定し、その後にキューのプロパティを1つ(または複数)指定します。

quarkus.rabbitmq.devservices.queues.my-queue.auto-delete=false          # defaults to 'false'
quarkus.rabbitmq.devservices.queues.my-queue.durable=true               # defaults to 'false'

さらに、キューの定義に arguments キーで追加の引数を指定することができます。

quarkus.rabbitmq.devservices.queues.my-queue.arguments.x-dead-letter-exchange=another-exchange

バインディングの定義

RabbitMQのバインディングを定義するには、 quarkus.rabbitmq.devservices.bindings キーの後にバインディングの名前を指定し、その後にバインディングのプロパティを1つ(または複数)指定します。

quarkus.rabbitmq.devservices.bindings.a-binding.source=my-exchange      # defaults to name of binding
quarkus.rabbitmq.devservices.bindings.a-binding.routing-key=some-key    # defaults to '#'
quarkus.rabbitmq.devservices.bindings.a-binding.destination=my-queue    # defaults to name of binding
quarkus.rabbitmq.devservices.bindings.a-binding.destination-type=queue  # defaults to 'queue'
The name of the binding is only used for the purposes of the Dev Services configuration and is not part of the binding defined in RabbitMQ.

さらに、 arguments キーを使って、バインディングの定義に追加の引数を提供することができます。

quarkus.rabbitmq.devservices.bindings.a-binding.arguments.non-std-option=value

関連コンテンツ