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 は、コンテナを識別するために使用される quarkus-dev-service-rabbitmq ラベルを付与してコンテナを起動します。
|
複数の(共有)ブローカーが必要な場合は、 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
定義済のトポロジー
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'
バインディングの名前は、Dev Services の設定のためにのみ使用され、RabbitMQ で定義されたバインディングの一部ではありません。 |
さらに、 arguments
キーを使って、バインディングの定義に追加の引数を提供することができます。
quarkus.rabbitmq.devservices.bindings.a-binding.arguments.non-std-option=value