The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Dev Services for RabbitMQ

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

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

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

  • quarkus.rabbitmq.devservices.enabledfalse に設定されていること

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

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

Dev Services for RabbitMQは、ブローカーの起動にDockerを使用しています。お使いの環境でDockerがサポートされていない場合は、ブローカーを手動で起動するか、すでに稼働しているブローカーに接続する必要があります。ブローカーのアクセスは、 rabbitmq-hostrabbitmq-portrabbitmq-usernamerabbitmq-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

管理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'
バインディングの名前は、Dev Services の設定のためにのみ使用され、RabbitMQ で定義されたバインディングの一部ではありません。

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

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

関連コンテンツ