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
管理UIにアクセスする
デフォルトでは、Dev Services for RabbitMQ は management`タグ付きの公式イメージを使用します。つまり、https://github.com/docker-library/docs/tree/master/rabbitmq#management-plugin[management plugin] が利用可能になります。Dev UI を使用して、ランダムに影響を受ける HTTP ポートを見つけることができます。
または、`quarkus.rabbitmq.devservices.http-port
を使用して静的なポートを設定します。
定義済のトポロジー
Dev Services for RabbitMQ は、ブローカーの起動時のトポロジー定義をサポートしています。標準の Quarkus 設定で Virtual Hosts、Exchanges、Queues、および Bindings を定義できます。
仮想ホストの定義
RabbitMQ はデフォルトの仮想ホストとして /
を使用します。
追加の RabbitMQ 仮想ホストを定義するには、quarkus.rabbitmq.devservices.vhosts
キーに仮想ホストの名前を指定してください。
quarkus.rabbitmq.devservices.vhosts=my-vhost-1,my-vhost-2
エクスチェンジの定義
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'
quarkus.rabbitmq.devservices.exchanges.my-exchange.vhost=my-vhost # defaults to '/'
さらに、 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'
quarkus.rabbitmq.devservices.queues.my-queue.vhost=my-vhost # defaults to '/'
さらに、キューの定義に`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'
quarkus.rabbitmq.devservices.bindings.a-binding.vhost=my-vhost # defaults to '/'
バインディングの名前は、Dev Services の設定のためにのみ使用され、RabbitMQ で定義されたバインディングの一部ではありません。 |
さらに、 arguments
キーを使って、バインディングの定義に追加の引数を提供できます。
quarkus.rabbitmq.devservices.bindings.a-binding.arguments.non-std-option=value
設定リファレンス
ビルド時に固定される設定プロパティ - その他の設定プロパティは実行時にオーバーライド可能です。
Configuration property |
タイプ |
デフォルト |
---|---|---|
If Dev Services for RabbitMQ has been explicitly enabled or disabled. Dev Services are generally enabled by default, unless there is an existing configuration present. For RabbitMQ, Dev Services starts a broker unless Environment variable: Show more |
ブーリアン |
|
Optional fixed port the dev service will listen to. If not defined, the port will be chosen randomly. Environment variable: Show more |
int |
|
Optional fixed port for the RabbitMQ management plugin. If not defined, the port will be chosen randomly. Environment variable: Show more |
int |
|
The image to use. Note that only official RabbitMQ images are supported. Specifically, the image repository must end with Environment variable: Show more |
string |
|
Indicates if the RabbitMQ broker managed by Quarkus Dev Services is shared. When shared, Quarkus looks for running containers using label-based service discovery. If a matching container is found, it is used, and so a second one is not started. Otherwise, Dev Services for RabbitMQ starts a new container. The discovery uses the Container sharing is only used in dev mode. Environment variable: Show more |
ブーリアン |
|
The value of the This property is used when you need multiple shared RabbitMQ brokers. Environment variable: Show more |
string |
|
Type of exchange: direct, topic, headers, fanout, etc. Environment variable: Show more |
string |
|
Should the exchange be deleted when all queues are finished using it? Environment variable: Show more |
ブーリアン |
|
Should the exchange remain after restarts? Environment variable: Show more |
ブーリアン |
|
What virtual host should the exchange be associated with? Environment variable: Show more |
string |
|
Extra arguments for the exchange definition. Environment variable: Show more |
Map<String,String> |
|
Should the queue be deleted when all consumers are finished using it? Environment variable: Show more |
ブーリアン |
|
Should the queue remain after restarts? Environment variable: Show more |
ブーリアン |
|
What virtual host should the queue be associated with? Environment variable: Show more |
string |
|
Extra arguments for the queue definition. Environment variable: Show more |
Map<String,String> |
|
Source exchange to bind to. Defaults to name of binding instance. Environment variable: Show more |
string |
|
Routing key specification for the source exchange. Environment variable: Show more |
string |
|
Destination exchange or queue to bind to. Defaults to name of binding instance. Environment variable: Show more |
string |
|
Destination type for binding: queue, exchange, etc. Environment variable: Show more |
string |
|
What virtual host should the binding be associated with? Environment variable: Show more |
string |
|
Extra arguments for the binding definition. Environment variable: Show more |
Map<String,String> |
|
Virtual hosts that should be predefined after starting the RabbitMQ broker. Environment variable: Show more |
list of string |
|
Environment variables that are passed to the container. Environment variable: Show more |
Map<String,String> |