The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

リアクティブメッセージング RabbitMQ コネクターのリファレンスドキュメント

このガイドは、 RabbitMQ スタートガイド のドキュメントです。リアクティブメッセージング用 RabbitMQ コネクターの設定と使い方について詳しく説明します。

このドキュメントは、コネクターのすべての詳細を網羅しているわけではありません。詳細については、 SmallRye Reactive Messaging website サイトを参照してください。

RabbitMQ コネクターを使用すると、Quarkus アプリケーションは AMQP 0.9.1 プロトコルを使用してメッセージを送受信できます。プロトコルの詳細については、 AMQP 0.9.1 の仕様書 を参照してください。

RabbitMQ コネクターは AMQP 0-9-1 をサポートします。これは、AMQP 1.0 コネクターで使用される AMQP 1.0 プロトコルとは大きく異なります。AMQP 1.0 コネクターのリファレンス で説明されているように、 機能は縮小 されていますが、AMQP 1.0 コネクターを RabbitMQ で使用できます。

この技術は、previewと考えられています。

preview では、下位互換性やエコシステムでの存在は保証されていません。具体的な改善には設定や API の変更が必要になるかもしれませんが、 stable になるための計画は現在進行中です。フィードバックは メーリングリストGitHub の課題管理 で受け付けています。

とりうるステータスの完全なリストについては、 FAQの項目 を参照してください。

RabbitMQ コネクターのエクステンション

コネクタを使用するには、 quarkus-messaging-rabbitmq エクステンションを追加する必要があります。

次のコマンドでプロジェクトにエクステンションを追加することができます:

> ./mvnw quarkus:add-extensions -Dextensions="quarkus-messaging-rabbitmq"

あるいは、以下の依存関係をプロジェクトに追加するだけです:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-messaging-rabbitmq</artifactId>
</dependency>

プロジェクトに追加したら、connector 属性を設定することで、チャネル を RabbitMQ エクスチェンジまたはキューにマップできます。

# Inbound
mp.messaging.incoming.[channel-name].connector=smallrye-rabbitmq

# Outbound
mp.messaging.outgoing.[channel-name].connector=smallrye-rabbitmq

ブローカーの要求に応じて、outgoing チャネルは RabbitMQ エクスチェンジにマップされ、incoming チャネルは RabbitMQ キューにマップされます。

RabbitMQ ブローカーアクセスの設定

RabbitMQ コネクターは RabbitMQ ブローカーに接続します。ブローカーの場所とクレデンシャルを設定するには、application.properties に次のプロパティーを追加します。

rabbitmq-host=amqp (1)
rabbitmq-port=5672 (2)
rabbitmq-username=my-username (3)
rabbitmq-password=my-password (4)

mp.messaging.incoming.prices.connector=smallrye-rabbitmq (5)
1 ブローカーのホスト名を設定します。チャネルごとに (host 属性を使用して) 設定するか、rabbitmq-host を使用してグローバルに設定できます。
2 ブローカーポートを設定します。チャネルごとに (port 属性を使用して) 設定するか、rabbitmq-port を使用してグローバルに設定できます。デフォルトは 5672 です。
3 必要に応じてブローカーのユーザー名を設定します。チャネルごとに (username 属性を使用して) 設定するか、rabbitmq-username を使用してグローバルに設定できます。
4 必要に応じてブローカーのパスワードを設定します。チャネルごとに (password 属性を使用して) 設定するか、rabbitmq-password を使用してグローバルに設定できます。
5 価格チャネルに RabbitMQ コネクターでの管理を指示

開発モードでテストを実行すると、Dev Services for RabbitMQ が自動的に RabbitMQ ブローカーを起動します。

RabbitMQ メッセージの受信

アプリケーションが メッセージ <Double> を受信すると想像してみましょう。ペイロードを直接消費できます。

package inbound;

import org.eclipse.microprofile.reactive.messaging.Incoming;

import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class RabbitMQPriceConsumer {

    @Incoming("prices")
    public void consume(double price) {
        // process your price.
    }

}

または、Message<Double> を取得できます。

package inbound;

import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Message;

import jakarta.enterprise.context.ApplicationScoped;
import java.util.concurrent.CompletionStage;

@ApplicationScoped
public class RabbitMQPriceMessageConsumer {

    @Incoming("prices")
    public CompletionStage<Void> consume(Message<Double> price) {
        // process your price.

        // Acknowledge the incoming message, marking the RabbitMQ message as `accepted`.
        return price.ack();
    }

}

インバウンドメタデータ

RabbitMQ からのメッセージには、メタデータに IncomingRabbitMQMetadata のインスタンスが含まれています。

Optional<IncomingRabbitMQMetadata> metadata = incoming.getMetadata(IncomingRabbitMQMetadata.class);
metadata.ifPresent(meta -> {
    final Optional<String> contentEncoding = meta.getContentEncoding();
    final Optional<String> contentType = meta.getContentType();
    final Optional<String> correlationId = meta.getCorrelationId();
    final Optional<ZonedDateTime> creationTime = meta.getCreationTime(ZoneId.systemDefault());
    final Optional<Integer> priority = meta.getPriority();
    final Optional<String> replyTo = meta.getReplyTo();
    final Optional<String> userId = meta.getUserId();

    // Access a single String-valued header
    final Optional<String> stringHeader = meta.getHeader("my-header", String.class);

    // Access all headers
    final Map<String,Object> headers = meta.getHeaders();
    // ...
});

デシリアライズ

コネクターは、受信 RabbitMQ メッセージをリアクティブメッセージング Message<T> インスタンスに変換します。ペイロードタイプ T は、RabbitMQ 受信メッセージエンベロープ content_type および content_encoding プロパティーの値によって異なります。

content_encoding content_type T

現在の値

n/a

byte[]

値なし

text/plain

String

値なし

application/json

バッファーに配列、オブジェクト、文字列などが含まれる場合に JsonArrayJsonObjectString などにできる JSON 要素

値なし

その他

byte[]

この RabbitMQ コネクター (アウトバウンドコネクター) を使用してオブジェクトを送信する場合、オブジェクトは JSON としてエンコードされ、content_typeapplication/json に設定されて送信されます。このペイロードは、(Vert.x) JSON オブジェクトを使用して受け取り、任意のオブジェクトクラスにマップできます。

@ApplicationScoped
public static class Generator {

    @Outgoing("to-rabbitmq")
    public Multi<Price> prices() { (1)
        AtomicInteger count = new AtomicInteger();
        return Multi.createFrom().ticks().every(Duration.ofMillis(1000))
                .map(l -> new Price().setPrice(count.incrementAndGet()))
                .onOverflow().drop();
    }

}

@ApplicationScoped
public static class Consumer {

    List<Price> prices = new CopyOnWriteArrayList<>();

    @Incoming("from-rabbitmq")
    public void consume(JsonObject p) { (2)
        Price price = p.mapTo(Price.class); (3)
        prices.add(price);
    }

    public List<Price> list() {
        return prices;
    }
}
1 Price インスタンスはコネクターによって自動的に JSON にエンコードされます。
2 それを、JsonObject を使用して受け取ることができます。
3 その後、mapTo メソッドを使用してインスタンスを再構築できます。
mapTo メソッドは Quarkus Jackson マッパーを使用します。マッパーの設定について、詳しくは このガイド を参照してください。

確認

RabbitMQ メッセージに関連付けられたリアクティブメッセージングメッセージが確認されると、メッセージが 受け入れられた ことをブローカーに通知します。

メッセージを明示的に確認する必要があるかどうかは、チャネルの auto-acknowledgement により異なります。これが true に設定されている場合、メッセージは受信時に自動的に確認されます。

失敗の管理

RabbitMQ メッセージから生成されたメッセージがnackされた場合、失敗戦略が適用されます。RabbitMQ コネクターは、失敗戦略チャネルの設定により制御される 3 つの戦略をサポートします。

  • fail - アプリケーションは失敗し、これ以上 RabbitMQ メッセージは処理されません。RabbitMQ メッセージは拒否済みとしてマークされます。

  • accept - この戦略は、RabbitMQ メッセージを 承認済み としてマークします。処理は失敗を無視して続行します。

  • reject - この戦略は、RabbitMQ メッセージを拒否済み (デフォルト) としてマークします。処理は次のメッセージに進みます。

RabbitMQ メッセージの送信

シリアル化

Message<T> 送信時、コネクターはメッセージを RabbitMQ メッセージに変換します。ペイロードは RabbitMQ メッセージの本文に変換されます。

T RabbitMQ メッセージの本文

プリミティブ型または UUID/String

content_typetext/plain に設定された文字列の値

JsonObject または JsonArray

content_typeapplication/json に設定されたシリアライズされた文字列ペイロード

io.vertx.mutiny.core.buffer.Buffer

content_typeapplication/octet-stream に設定されたバイナリーコンテンツ

byte[]

content_typeapplication/octet-stream に設定されたバイナリーコンテンツ

その他のクラス

ペイロードは (Json Mapper を使用して) JSON に変換され、その後 content_typeapplication/json json に設定されてシリアライズされます。

メッセージペイロードを JSON にシリアライズできない場合、メッセージは nack されます。

アウトバウンドメタデータ

Messages を送信するときに、OutgoingRabbitMQMetadata のインスタンスを追加して、RabbitMQ によるメッセージの処理方法に影響を与えることができます。たとえば、ルーティングキー、タイムスタンプ、およびヘッダーを設定できます。

final OutgoingRabbitMQMetadata metadata = new OutgoingRabbitMQMetadata.Builder()
        .withHeader("my-header", "xyzzy")
        .withRoutingKey("urgent")
        .withTimestamp(ZonedDateTime.now())
        .build();

// Add `metadata` to the metadata of the outgoing message.
return Message.of("Hello", Metadata.of(metadata));

確認

デフォルトでは、ブローカーがメッセージを確認すると、リアクティブメッセージングの Message が確認されます。

RabbitMQ エクスチェンジ/キューの設定

チャネル設定のプロパティーを使用して、チャネルに関連付けられた RabbitMQ エクスチェンジまたはキューを設定できます。incoming チャネルは RabbitMQ queues にマップされ、outgoing チャネルは RabbitMQ エクスチェンジにマップされます。以下はその例です。

mp.messaging.incoming.prices.connector=smallrye-rabbitmq
mp.messaging.incoming.prices.queue.name=my-queue

mp.messaging.outgoing.orders.connector=smallrye-rabbitmq
mp.messaging.outgoing.orders.exchange.name=my-order-queue

exchange.name または queue.name 属性が設定されていない場合、コネクターはチャネル名を使用します。

既存のキューを使用するには、name を設定し、エクスチェンジまたはキュー の declare プロパティーを false に設定する必要があります。たとえば、people エクスチェンジとキューで設定された RabbitMQ ブローカーがある場合、次の設定が必要です。

mp.messaging.incoming.people.connector=smallrye-rabbitmq
mp.messaging.incoming.people.queue.name=people
mp.messaging.incoming.people.queue.declare=false

mp.messaging.outgoing.people.connector=smallrye-rabbitmq
mp.messaging.outgoing.people.exchange.name=people
mp.messaging.outgoing.people.exchange.declare=false

実行モデルとブロッキング処理

リアクティブメッセージングは、I/O スレッドでメソッドを呼び出します。このトピックの詳細については、xQuarkus リアクティブアーキテクチャーのドキュメント を参照してください。ただし、多くの場合、リアクティブメッセージングとデータベースインタラクションなどのブロック処理を組み合わせる必要があります。このためには、処理が ブロッキング であり、呼び出し元のスレッドで実行するべきではないことを示す @Blocking アノテーションを使用する必要があります。

例えば、以下のコードは、Hibernate with Panacheを 使用してデータベースに受信ペイロードを格納する方法を示しています。

import io.smallrye.reactive.messaging.annotations.Blocking;
import org.eclipse.microprofile.reactive.messaging.Incoming;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.transaction.Transactional;

@ApplicationScoped
public class PriceStorage {

    @Incoming("prices")
    @Blocking
    @Transactional
    public void store(int priceInUsd) {
        Price price = new Price();
        price.value = priceInUsd;
        price.persist();
    }

}

@Blocking アノテーションは 2 つあります。

  1. io.smallrye.reactive.messaging.annotations.Blocking

  2. io.smallrye.common.annotation.Blocking

効果はどちらも同じです。したがって、両方を使うことができます。最初のものは、使用するワーカープールや順序を保持するかどうかなど、より細かい調整が可能です。2 番目のものは、Quarkus の他のリアクティブ機能でも使用され、デフォルトのワーカープールを使用し、順序を保持します。

@RunOnVirtualThread

Java 仮想スレッドでの ブロッキング処理の実行については、 Quarkus Virtual Thread support with Reactive Messagingのドキュメント を参照してください。

基盤となる RabbitMQ クライアントのカスタマイズ

コネクターは、その下にある Vert.x RabbitMQ クライアントを使用します。このクライアントの詳細については、 Vert.x Web サイト を参照してください。

次のように RabbitMQOptions のインスタンスを生成することにより、基盤となるクライアント設定をカスタマイズできます。

@Produces
@Identifier("my-named-options")
public RabbitMQOptions getNamedOptions() {
  PemKeyCertOptions keycert = new PemKeyCertOptions()
        .addCertPath("./tls/tls.crt")
        .addKeyPath("./tls/tls.key");
  PemTrustOptions trust = new PemTrustOptions().addCertPath("./tlc/ca.crt");
  // You can use the produced options to configure the TLS connection
  return new RabbitMQOptions()
        .setSsl(true)
        .setPemKeyCertOptions(keycert)
        .setPemTrustOptions(trust)
        .setUser("user1")
        .setPassword("password1")
        .setHost("localhost")
        .setPort(5672)
        .setVirtualHost("vhost1")
        .setConnectionTimeout(6000) // in milliseconds
        .setRequestedHeartbeat(60) // in seconds
        .setHandshakeTimeout(6000) // in milliseconds
        .setRequestedChannelMax(5)
        .setNetworkRecoveryInterval(500) // in milliseconds
        .setAutomaticRecoveryEnabled(true);
}

このインスタンスが取得され、コネクターが使用するクライアントを設定するために使用されます。client-options-name 属性を使用してクライアントの名前を指定する必要があります。

mp.messaging.incoming.prices.client-options-name=my-named-options

TLS Configuration

RabbitMQ Messaging extension integrates with the Quarkus TLS registry to configure the Vert.x RabbitMQ client.

To configure the TLS for a channel, you need to provide a named TLS configuration in the application.properties:

quarkus.tls.your-tls-config.trust-store.pem.certs=ca.crt,ca2.pem
# ...
mp.messaging.incoming.prices.tls-configuration-name=your-tls-config

ヘルスレポート

quarkus-smallrye-health エクステンション を備えた RabbitMQ コネクターを使用すると、readinessと liveness の確認に役立ちます。RabbitMQ コネクターは、コネクターによって管理される各チャネルの readubess と liveness を報告します。

ヘルスレポートを無効にするには、チャネルの health-enabled 属性を false に設定します。

インバウンド側 (RabbitMQ からのメッセージを受信) では、チェックにより受信者がブローカーに接続されていることを確認します。

アウトバウンド側 (RabbitMQ にレコードを送信) では、チェックにより、送信者がブローカーから切断されていないことを確認します。送信者は初期化された状態 (接続は未試行) の_可能性_がありますが、これはlive/ready と見なされます。

メッセージ処理の失敗はメッセージをnackし、failure-strategy で処理されることに注意してください。失敗を報告し、チェックの結果に影響を与えるのは failure-strategy です。失敗戦略の fail は失敗を報告し、チェックも失敗を報告します。

動的クレデンシャル

Quarkus と RabbitMQ コネクターは、短期間の動的クレデンシャルを生成するために Vault の RabbitMQ シークレットエンジン をサポートしています。これにより、Vault は定期的に RabbitMQ クレデンシャルを作成および廃止できます。

まず、Vault の rabbitmq シークレットエンジンを有効にし、RabbitMQ の接続と認証情報を使用して設定し、Vault ロール my-role を作成する必要があります ( 10.0.0.3 を RabbitMQ コンテナーを実行している実際のホストに置き換えます)。

vault secrets enable rabbitmq

vault write rabbitmq/config/connection \
    connection_uri=http://10.0.0.3:15672 \
    username=guest \
    password=guest

vault write rabbitmq/roles/my-role \
    vhosts='{"/":{"write": ".*", "read": ".*"}}'

このユースケースでは、上記で設定されたユーザー guest は、クレデンシャルの作成機能を持つ RabbitMQ 管理者ユーザーである必要があります。

次に、パス rabbitmq/creds/my-role で Quarkus アプリケーションに読み取り機能を与える必要があります。

cat <<EOF | vault policy write vault-rabbitmq-policy -
path "secret/data/myapps/vault-rabbitmq-test/*" {
  capabilities = ["read"]
}
path "rabbitmq/creds/my-role" {
  capabilities = [ "read" ]
}
EOF

これで Vault は RabbitMQ でユーザーを作成する方法を把握したため、RabbitMQ のクレデンシャルプロバイダーを使用するように Quarkus を設定する必要があります。

まず、Quarkus に、rabbitmq という名前のクレデンシャルプロバイダーを使用して動的クレデンシャルを要求するように指示します。

quarkus.rabbitmq.credentials-provider = rabbitmq

次に、rabbitmq クレデンシャルプロバイダーを設定します。credentials-role オプションは、Vault で作成したロールの名前 (この場合は my-role) に設定する必要があります。credentials-mount オプションは rabbitmq に設定する必要があります。

quarkus.vault.credentials-provider.rabbitmq.credentials-role=my-role
quarkus.vault.credentials-provider.rabbitmq.credentials-mount=rabbitmq
credentials-mount は、Vault のシークレットエンジンのマウントとして直接使用されます。ここでは、デフォルトのマウントパスである rabbitmq を使用しています。RabbitMQ シークレットエンジンがカスタムパスにマウントされている場合は、代わりに`credentials-mount` オプションをそのパスに設定する必要があります。

RabbitMQ コネクター設定のリファレンス

受信チャネルの設定

属性 (alias) 説明 必須 デフォルト

username

(rabbitmq-username)

ブローカーへの認証に使用されるユーザー名

Type: string

false

password

(rabbitmq-password)

ブローカーへの認証に使用されるパスワード

Type: string

false

host

(rabbitmq-host)

ブローカーのホスト名

Type: string

false

localhost

port

(rabbitmq-port)

ブローカーポート

Type: int

false

5672

ssl

(rabbitmq-ssl)

接続で SSL を使用するかどうか

Type: boolean

false

false

trust-all

(rabbitmq-trust-all)

信頼証明書の検証を省略するかどうか

Type: boolean

false

false

trust-store-path

(rabbitmq-trust-store-path)

JKS トラストストアへのパス

Type: string

false

trust-store-password

(rabbitmq-trust-store-password)

JKS トラストストアのパスワード

Type: string

false

credentials-provider-name

(rabbitmq-credentials-provider-name)

RabbitMQ クライアントに動的クレデンシャルを提供するために使用される RabbitMQ クレデンシャルプロバイダー Bean の名前

Type: string

false

connection-timeout

TCP 接続タイムアウト (ミリ秒)。0 はタイムアウトなしとして解釈されます。

Type: int

false

60000

handshake-timeout

AMQP 0-9-1 プロトコルハンドシェイクタイムアウト (ミリ秒)

Type: int

false

10000

automatic-recovery-enabled

自動接続回復が有効にかどうか

Type: boolean

false

false

automatic-recovery-on-initial-connection

初期接続での自動回復が有効かどうか

Type: boolean

false

true

reconnect-attempts

(rabbitmq-reconnect-attempts)

再接続の試行回数

Type: int

false

100

reconnect-interval

(rabbitmq-reconnect-interval)

2 回の再接続試行の間隔 (秒)

Type: int

false

10

network-recovery-interval

再接続を試行する前に自動回復が待機する時間 (ミリ秒)

Type: int

false

5000

user

ブローカーに接続するときに使用する AMQP ユーザー名

Type: string

false

guest

include-properties

ブローカーメッセージがイベントバスで渡されるときにプロパティーを含めるかどうか

Type: boolean

false

false

requested-channel-max

最初に要求された最大チャネル数

Type: int

false

2047

requested-heartbeat

最初に要求されたハートビート間隔 (秒)、ゼロの場合はなし

Type: int

false

60

use-nio

NIO ソケットの使用が有効かどうか

Type: boolean

false

false

virtual-host

(rabbitmq-virtual-host)

ブローカーに接続するときに使用する仮想ホスト

Type: string

false

/

exchange.name

メッセージが公開される、または消費されるエクスチェンジ。設定されていない場合、チャネル名が使用されます。 "" に設定されている場合、デフォルトのExchangeが使用されます。

Type: string

false

exchange.durable

エクスチェンジが耐久性があるかどうか

Type: boolean

false

true

exchange.auto-delete

使用後にエクスチェンジを削除する必要があるかどうか

Type: boolean

false

false

exchange.type

エクスチェンジのType: 直接、ファンアウト、ヘッダー、またはトピック (デフォルト)

Type: string

false

topic

exchange.declare

エクスチェンジを宣言するかどうか。エクスチェンジが独立して設定されることが予想される場合は、false に設定します。

Type: boolean

false

true

tracing.enabled

トレースを有効(デフォルト)にするか、無効にするか

Type: boolean

false

true

tracing.attribute-headers

スパン属性として記録する必要があるヘッダーのコンマ区切りリスト。trace.enabled=true の場合にのみ関連します。

Type: string

false

``

queue.name

メッセージが消費されるキュー。

Type: string

true

queue.durable

キューに耐久性があるかどうか

Type: boolean

false

true

queue.exclusive

キューが専用かどうか

Type: boolean

false

false

queue.auto-delete

使用後にキューを削除する必要があるかどうか

Type: boolean

false

false

queue.declare

キューとバインディングを宣言するかどうか。これらが独立して設定されることが予想される場合は、false に設定します

Type: boolean

false

true

queue.ttl

指定されている場合、メッセージがデッドになる前に配信されないままキューに残る時間 (ms)

Type: long

false

queue.single-active-consumer

trueに設定すると、1人のコンシューマのみがメッセージをアクティブに消費できるようになります。

Type: boolean

false

false

queue.x-queue-type

キューを自動的に宣言する場合、キューの種類 [quorum, classic, stream] を選ぶことができます。

Type: string

false

classic

queue.x-queue-mode

自動的にキューを宣言する場合、キューのモード [lazy, default] を選択することができます。

Type: string

false

default

max-incoming-internal-queue-size

受信内部キューの最大サイズ

Type: int

false

connection-count

このキューから消費するために作成するRabbitMQ接続の数です。これは、単一のクライアントでシャードされたキューから消費するために必要な場合があります。

Type: int

false

1

auto-bind-dlq

DLQ を自動的に宣言し、それをバインダー DLX にバインドするかどうか

Type: boolean

false

false

dead-letter-queue-name

DLQ の名前。指定しない場合、デフォルトは キューの名前に .dlq を追加したものになります。

Type: string

false

dead-letter-exchange

キューに割り当てる DLX。auto-bind-dlq が true の場合にのみ関連します。

Type: string

false

DLX

dead-letter-exchange-type

キューに割り当てる DLX のタイプ。auto-bind-dlq が true の場合にのみ関連します。

Type: string

false

direct

dead-letter-routing-key

キューに割り当てるデッドレタールーティングキー。指定しない場合、デフォルトでキュー名になります。

Type: string

false

dlx.declare

デッドレターエクスチェンジバインディングを宣言するかどうか。auto-bind-dlq が true の場合にのみ関連します。これらが独立して設定されることが予想される場合は、false に設定します。

Type: boolean

false

false

dead-letter-queue-type

DLQを自動的に宣言する場合、DLQの種類 [quorum, classic, stream] を選ぶことができます。

Type: string

false

classic

dead-letter-queue-mode

DLQを自動的に宣言する場合、DLQのモード [lazy, default] を選択することができます。

Type: string

false

default

failure-strategy

RabbitMQ メッセージがnackされた場合に適用する失敗戦略。承認される値は、failacceptreject (デフォルト) です。

Type: string

false

reject

broadcast

受信した RabbitMQ メッセージを複数の サブスクライバー にディスパッチする必要があるかどうか

Type: boolean

false

false

auto-acknowledgement

受信した RabbitMQ メッセージを受信時に確認する必要があるかどうか。true の場合、配信は確認されます。

Type: boolean

false

false

keep-most-recent

最近のメッセージではなく古いメッセージを破棄するかどうか

Type: boolean

false

false

routing-keys

キューをエクスチェンジにバインドするためのルーティングキーのコンマ区切りリスト

Type: string

false

#

content-type-override

受信メッセージのcontent_type属性をオーバーライドします。有効なMIMEタイプであるべきです。

Type: string

false

max-outstanding-messages

RabbitMQ に送信/未ackメッセージの最大数。正の数でなければなりません。

Type: int

false

発信チャネル設定

属性 (alias) 説明 必須 デフォルト

automatic-recovery-enabled

自動接続回復が有効にかどうか

Type: boolean

false

false

automatic-recovery-on-initial-connection

初期接続での自動回復が有効かどうか

Type: boolean

false

true

connection-timeout

TCP 接続タイムアウト (ミリ秒)。0 はタイムアウトなしとして解釈されます。

Type: int

false

60000

default-routing-key

エクスチェンジにメッセージを送信するときに使用するデフォルトのルーティングキー

Type: string

false

``

default-ttl

指定されている場合、送信されたメッセージが未配信のままキューに残る時間 (ミリ秒)

Type: long

false

exchange.auto-delete

使用後にエクスチェンジを削除する必要があるかどうか

Type: boolean

false

false

exchange.declare

エクスチェンジを宣言するかどうか。エクスチェンジが独立して設定されることが予想される場合は、false に設定します。

Type: boolean

false

true

exchange.durable

エクスチェンジが耐久性があるかどうか

Type: boolean

false

true

exchange.name

メッセージが公開される、または消費されるエクスチェンジ。設定されていない場合、チャネル名が使用されます。 "" に設定されている場合、デフォルトのExchangeが使用されます。

Type: string

false

exchange.type

エクスチェンジのType: 直接、ファンアウト、ヘッダー、またはトピック (デフォルト)

Type: string

false

topic

handshake-timeout

AMQP 0-9-1 プロトコルハンドシェイクタイムアウト (ミリ秒)

Type: int

false

10000

host

(rabbitmq-host)

ブローカーのホスト名

Type: string

false

localhost

include-properties

ブローカーメッセージがイベントバスで渡されるときにプロパティーを含めるかどうか

Type: boolean

false

false

max-inflight-messages

RabbitMQ に同時に書き込まれるメッセージの最大数。正の数でなければなりません。

Type: long

false

1024

max-outgoing-internal-queue-size

発信内部キューの最大サイズ

Type: int

false

network-recovery-interval

再接続を試行する前に自動回復が待機する時間 (ミリ秒)

Type: int

false

5000

password

(rabbitmq-password)

ブローカーへの認証に使用されるパスワード

Type: string

false

port

(rabbitmq-port)

ブローカーポート

Type: int

false

5672

reconnect-attempts

(rabbitmq-reconnect-attempts)

再接続の試行回数

Type: int

false

100

reconnect-interval

(rabbitmq-reconnect-interval)

2 回の再接続試行の間隔 (秒)

Type: int

false

10

requested-channel-max

最初に要求された最大チャネル数

Type: int

false

2047

requested-heartbeat

最初に要求されたハートビート間隔 (秒)、ゼロの場合はなし

Type: int

false

60

ssl

(rabbitmq-ssl)

接続で SSL を使用するかどうか

Type: boolean

false

false

tracing.attribute-headers

スパン属性として記録する必要があるヘッダーのコンマ区切りリスト。trace.enabled=true の場合にのみ関連します。

Type: string

false

``

tracing.enabled

トレースを有効(デフォルト)にするか、無効にするか

Type: boolean

false

true

trust-all

(rabbitmq-trust-all)

信頼証明書の検証を省略するかどうか

Type: boolean

false

false

trust-store-password

(rabbitmq-trust-store-password)

JKS トラストストアのパスワード

Type: string

false

trust-store-path

(rabbitmq-trust-store-path)

JKS トラストストアへのパス

Type: string

false

credentials-provider-name

(rabbitmq-credentials-provider-name)

RabbitMQ クライアントに動的クレデンシャルを提供するために使用される RabbitMQ クレデンシャルプロバイダー Bean の名前

Type: string

false

use-nio

NIO ソケットの使用が有効かどうか

Type: boolean

false

false

user

ブローカーに接続するときに使用する AMQP ユーザー名

Type: string

false

guest

username

(rabbitmq-username)

ブローカーへの認証に使用されるユーザー名

Type: string

false

virtual-host

(rabbitmq-virtual-host)

ブローカーに接続するときに使用する仮想ホスト

Type: string

false

/

関連コンテンツ