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 です。

共有は、開発モードではデフォルトで有効ですが、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

Access the management UI

By default, Dev Services for RabbitMQ use the official image with the management tag. This means you have the management plugin available. You can use the Dev UI to find the HTTP port randomly affected or configure a static one via 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