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`タグ付きの公式イメージを使用します。つまり、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 rabbitmq-host or rabbitmq-port are set or if all the Reactive Messaging RabbitMQ channel are configured with host or port.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_ENABLED

Show more

ブーリアン

Optional fixed port the dev service will listen to.

If not defined, the port will be chosen randomly.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_PORT

Show more

int

Optional fixed port for the RabbitMQ management plugin.

If not defined, the port will be chosen randomly.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_HTTP_PORT

Show more

int

The image to use. Note that only official RabbitMQ images are supported. Specifically, the image repository must end with rabbitmq.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_IMAGE_NAME

Show more

string

rabbitmq:3.12-management

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 quarkus-dev-service-rabbitmq label. The value is configured using the service-name property.

Container sharing is only used in dev mode.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_SHARED

Show more

ブーリアン

true

The value of the quarkus-dev-service-rabbitmq label attached to the started container. This property is used when shared is set to true. In this case, before starting a container, Dev Services for RabbitMQ looks for a container with the quarkus-dev-service-rabbitmq label set to the configured value. If found, it will use this container instead of starting a new one. Otherwise, it starts a new container with the quarkus-dev-service-rabbitmq label set to the specified value.

This property is used when you need multiple shared RabbitMQ brokers.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_SERVICE_NAME

Show more

string

rabbitmq

Type of exchange: direct, topic, headers, fanout, etc.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_EXCHANGES__EXCHANGE_NAME__TYPE

Show more

string

direct

Should the exchange be deleted when all queues are finished using it?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_EXCHANGES__EXCHANGE_NAME__AUTO_DELETE

Show more

ブーリアン

false

Should the exchange remain after restarts?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_EXCHANGES__EXCHANGE_NAME__DURABLE

Show more

ブーリアン

false

What virtual host should the exchange be associated with?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_EXCHANGES__EXCHANGE_NAME__VHOST

Show more

string

/

Extra arguments for the exchange definition.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_EXCHANGES__EXCHANGE_NAME__ARGUMENTS__ARGUMENT_NAME_

Show more

Map<String,String>

Should the queue be deleted when all consumers are finished using it?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_QUEUES__QUEUE_NAME__AUTO_DELETE

Show more

ブーリアン

false

Should the queue remain after restarts?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_QUEUES__QUEUE_NAME__DURABLE

Show more

ブーリアン

false

What virtual host should the queue be associated with?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_QUEUES__QUEUE_NAME__VHOST

Show more

string

/

Extra arguments for the queue definition.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_QUEUES__QUEUE_NAME__ARGUMENTS__ARGUMENT_NAME_

Show more

Map<String,String>

Source exchange to bind to. Defaults to name of binding instance.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__SOURCE

Show more

string

Routing key specification for the source exchange.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__ROUTING_KEY

Show more

string

#

Destination exchange or queue to bind to. Defaults to name of binding instance.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__DESTINATION

Show more

string

Destination type for binding: queue, exchange, etc.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__DESTINATION_TYPE

Show more

string

queue

What virtual host should the binding be associated with?

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__VHOST

Show more

string

/

Extra arguments for the binding definition.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_BINDINGS__BINDING_NAME__ARGUMENTS__ARGUMENT_NAME_

Show more

Map<String,String>

Virtual hosts that should be predefined after starting the RabbitMQ broker.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_VHOSTS

Show more

list of string

Environment variables that are passed to the container.

Environment variable: QUARKUS_RABBITMQ_DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

Show more

Map<String,String>

関連コンテンツ