编辑此页面

Reactive Messaging RabbitMQ 连接器参考文档

本指南是 RabbitMQ 入门 的配套文档。它更详细地解释了用于响应式消息传递的 RabbitMQ 连接器的配置和使用。

本文档不涵盖连接器的所有细节。有关更多详细信息,请参阅 SmallRye 响应式消息传递网站

RabbitMQ 连接器允许 Quarkus 应用程序使用 AMQP 0.9.1 协议发送和接收消息。有关该协议的更多详细信息,请参见 AMQP 0.9.1 规范

RabbitMQ 连接器支持 AMQP 0-9-1,它与 AMQP 1.0 连接器使用的 AMQP 1.0 协议有很大不同。 您可以将 AMQP 1.0 连接器与 RabbitMQ 一起使用,如 AMQP 1.0 连接器参考中所述,尽管功能会减少

此技术被认为是预览版。

预览版中,不保证向后兼容性和在生态系统中的存在。具体改进可能需要更改配置或 API,并且成为稳定版的计划正在进行中。欢迎通过我们的 邮件列表或在我们的 GitHub 问题跟踪器中提供反馈。

有关可能的完整状态列表,请查看我们的常见问题解答条目

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 指示 prices 通道由 RabbitMQ 连接器管理

在开发模式和运行测试时,RabbitMQ 的开发服务会自动启动 RabbitMQ 代理。

接收 RabbitMQ 消息

假设您的应用程序接收 Message<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_typecontent_encoding 属性的值。

content_encoding content_type T

存在值

不适用

byte[]

没有值

text/plain

String

没有值

application/json

一个 JSON 元素,它可以是 JsonArrayJsonObjectString,……等等,如果缓冲区包含数组、对象、字符串,……等等

没有值

任何其他值

byte[]

如果您使用此 RabbitMQ 连接器(出站连接器)发送对象,它们将被编码为 JSON 并以 content_type 设置为 application/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 消息生成的消息被否定,则应用故障策略。 RabbitMQ 连接器支持三种策略,由 failure-strategy 通道设置控制

  • fail - 使应用程序失败;将不再处理 RabbitMQ 消息。 RabbitMQ 消息被标记为已拒绝。

  • accept - 此策略将 RabbitMQ 消息标记为已接受。处理继续,忽略故障。

  • reject - 此策略将 RabbitMQ 消息标记为已拒绝(默认)。处理继续处理下一条消息。

发送 RabbitMQ 消息

序列化

发送 Message<T> 时,连接器会将消息转换为 RabbitMQ 消息。有效负载转换为 RabbitMQ 消息体。

T RabbitMQ 消息体

基本类型或 UUID/String

content_type 设置为 text/plain 的字符串值

JsonObjectJsonArray

content_type 设置为 application/json 的序列化字符串有效负载

io.vertx.mutiny.core.buffer.Buffer

二进制内容,content_type 设置为 application/octet-stream

byte[]

二进制内容,content_type 设置为 application/octet-stream

任何其他类

有效负载转换为 JSON(使用 Json 映射器),然后序列化,content_type 设置为 application/json

如果消息有效负载无法序列化为 JSON,则消息会被否定

出站元数据

发送 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 queuesoutgoing 通道映射到 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.namequeue.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 线程上调用您的方法。 有关此主题的更多详细信息,请参阅 Quarkus 响应式架构文档。 但是,您通常需要将响应式消息传递与阻塞处理(例如数据库交互)相结合。 为此,您需要使用 @Blocking 注释,表明该处理是阻塞的,不应在调用者线程上运行。

例如,以下代码说明了如何使用带有 Panache 的 Hibernate 将传入的有效负载存储到数据库中

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();
    }

}

有 2 个 @Blocking 注释

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

  2. io.smallrye.common.annotation.Blocking

它们具有相同的效果。 因此,您可以同时使用两者。 第一个提供了更细粒度的调整,例如要使用的工作线程池以及它是否保留顺序。 第二个也与 Quarkus 的其他响应式功能一起使用,它使用默认工作线程池并保留顺序。

@RunOnVirtualThread

有关在 Java 虚拟线程上运行阻塞处理的信息,请参见 Quarkus 虚拟线程支持与响应式消息传递文档

自定义底层 RabbitMQ 客户端

连接器在底层使用 Vert.x RabbitMQ 客户端。 有关此客户端的更多详细信息,请参见 Vert.x 网站

您可以通过生成 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 配置

RabbitMQ 消息传递扩展与 Quarkus TLS 注册表集成以配置 Vert.x RabbitMQ 客户端。

要配置通道的 TLS,您需要在 application.properties 中提供一个命名的 TLS 配置

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

健康报告

如果您将 RabbitMQ 连接器与 quarkus-smallrye-health 扩展一起使用,它将有助于就绪性和活跃性探测。 RabbitMQ 连接器报告由连接器管理的每个通道的就绪性和活跃性。

要禁用健康报告,请将通道的 health-enabled 属性设置为 false。

在入站端(从 RabbitMQ 接收消息),检查验证接收者是否已连接到代理。

在出站端(向 RabbitMQ 发送记录),检查验证发送者是否已与代理断开连接;发送者可能仍处于初始化状态(尚未尝试连接),但这被认为是活跃/就绪状态。

请注意,消息处理失败会否定消息,然后由 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 管理员用户。

然后,我们需要向 Quarkus 应用程序授予对路径 rabbitmq/creds/my-role 的读取权限。

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 中创建用户,我们需要配置 Quarkus 以使用 RabbitMQ 的凭据提供程序。

首先,我们告诉 Quarkus 使用名为 rabbitmq 的凭据提供程序来请求动态凭据。

quarkus.rabbitmq.credentials-provider = rabbitmq

接下来,我们配置 rabbitmq 凭据提供程序。 credentials-role 选项必须设置为我们在 Vault 中创建的角色名称,在我们的例子中为 my-rolecredentials-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 连接器配置参考

入站通道配置

属性 (别名) 描述 强制 默认

username

(rabbitmq-username)

用于向代理进行身份验证的用户名

类型:字符串

false

密码

(rabbitmq-password)

用于向代理进行身份验证的密码

类型:字符串

false

主机

(rabbitmq-host)

代理主机名

类型:字符串

false

localhost

端口

(rabbitmq-port)

代理端口

类型:整数

false

5672

ssl

(rabbitmq-ssl)

连接是否应使用 SSL

类型:布尔值

false

false

trust-all

(rabbitmq-trust-all)

是否跳过信任证书验证

类型:布尔值

false

false

trust-store-path

(rabbitmq-trust-store-path)

JKS 信任存储的路径

类型:字符串

false

trust-store-password

(rabbitmq-trust-store-password)

JKS 信任存储的密码

类型:字符串

false

credentials-provider-name

(rabbitmq-credentials-provider-name)

用于向 RabbitMQ 客户端提供动态凭据的 RabbitMQ 凭据提供程序 bean 的名称

类型:字符串

false

connection-timeout

TCP 连接超时(毫秒); 0 被解释为没有超时

类型:整数

false

60000

handshake-timeout

AMQP 0-9-1 协议握手超时(毫秒)

类型:整数

false

10000

automatic-recovery-enabled

是否启用自动连接恢复

类型:布尔值

false

false

automatic-recovery-on-initial-connection

是否启用初始连接时的自动恢复

类型:布尔值

false

true

reconnect-attempts

(rabbitmq-reconnect-attempts)

重试连接的次数

类型:整数

false

100

reconnect-interval

(rabbitmq-reconnect-interval)

两次重新连接尝试之间的间隔(以秒为单位)

类型:整数

false

10

network-recovery-interval

自动恢复在尝试重新连接之前将等待多长时间(毫秒)

类型:整数

false

5000

user

连接到代理时要使用的 AMQP 用户名

类型:字符串

false

guest

include-properties

当代理消息传递到事件总线时是否包含属性

类型:布尔值

false

false

requested-channel-max

最初请求的最大通道数

类型:整数

false

2047

requested-heartbeat

最初请求的心跳间隔(秒),零表示无

类型:整数

false

60

use-nio

是否启用 NIO 套接字的使用

类型:布尔值

false

false

virtual-host

(rabbitmq-virtual-host)

连接到代理时要使用的虚拟主机

类型:字符串

false

/

exchange.name

消息发布到或从中消费的交换机。 如果未设置,则使用通道名称。 如果设置为 "",则使用默认交换机

类型:字符串

false

exchange.durable

交换机是否持久

类型:布尔值

false

true

exchange.auto-delete

是否应在使用后删除交换机

类型:布尔值

false

false

exchange.type

交换机类型:direct、fanout、headers 或 topic(默认)

类型:字符串

false

topic

exchange.declare

是否声明交换机;如果希望独立设置交换机,则设置为 false

类型:布尔值

false

true

tracing.enabled

是否启用(默认)或禁用跟踪

类型:布尔值

false

true

tracing.attribute-headers

一个逗号分隔的标头列表,应记录为 span 属性。 仅当 tracing.enabled=true 时才相关

类型:字符串

false

``

queue.name

从中消费消息的队列。

类型:字符串

true

queue.durable

队列是否持久

类型:布尔值

false

true

queue.exclusive

队列是否用于独占使用

类型:布尔值

false

false

queue.auto-delete

是否应在使用后删除队列

类型:布尔值

false

false

queue.declare

是否声明队列和绑定;如果希望独立设置这些,则设置为 false

类型:布尔值

false

true

queue.ttl

如果指定,则消息在队列中未传递之前可以保持处于死信状态的时间(毫秒)

类型:长整型

false

queue.single-active-consumer

如果设置为 true,则只有一个消费者可以主动消费消息

类型:布尔值

false

false

queue.x-queue-type

如果自动声明队列,我们可以选择不同类型的队列 [quorum, classic, stream]

类型:字符串

false

classic

queue.x-queue-mode

如果自动声明队列,我们可以选择不同的队列模式 [lazy, default]

类型:字符串

false

default

max-incoming-internal-queue-size

传入内部队列的最大大小

类型:整数

false

connection-count

为从该队列消费而创建的 RabbitMQ 连接数。 这可能需要从具有单个分片客户端的分片队列中消费。

类型:整数

false

1

auto-bind-dlq

是否自动声明 DLQ 并将其绑定到绑定器 DLX

类型:布尔值

false

false

dead-letter-queue-name

DLQ 的名称;如果未提供,则默认为队列名称附加 '.dlq'

类型:字符串

false

dead-letter-exchange

要分配给队列的 DLX。 仅当 auto-bind-dlq 为 true 时才相关

类型:字符串

false

DLX

dead-letter-exchange-type

要分配给队列的 DLX 类型。 仅当 auto-bind-dlq 为 true 时才相关

类型:字符串

false

direct

dead-letter-routing-key

要分配给队列的死信路由键;如果未提供,则默认为队列名称

类型:字符串

false

dlx.declare

是否声明死信交换机绑定。 仅当 auto-bind-dlq 为 true 时才相关; 如果希望独立设置这些,则设置为 false

类型:布尔值

false

false

dead-letter-queue-type

如果自动声明 DLQ,我们可以选择不同类型的 DLQ [quorum, classic, stream]

类型:字符串

false

classic

dead-letter-queue-mode

如果自动声明 DLQ,我们可以选择不同的 DLQ 模式 [lazy, default]

类型:字符串

false

default

失败策略

否定 RabbitMQ 消息时要应用的失败策略。 可接受的值为 failacceptreject(默认)

类型:字符串

false

reject

广播

是否必须将收到的 RabbitMQ 消息分派给多个订阅者

类型:布尔值

false

false

auto-acknowledgement

收到 RabbitMQ 消息时是否必须确认; 如果为 true,则传递构成确认

类型:布尔值

false

false

keep-most-recent

是否放弃旧消息而不是最新消息

类型:布尔值

false

false

routing-keys

将队列绑定到交换机的逗号分隔的路由键列表

类型:字符串

false

#

content-type-override

覆盖传入消息的 content_type 属性,应该是有效的 MIME 类型

类型:字符串

false

max-outstanding-messages

连接器一次处理的最大未完成/未确认消息数; 必须是正数

类型:整数

false

出站通道配置

属性 (别名) 描述 强制 默认

automatic-recovery-enabled

是否启用自动连接恢复

类型:布尔值

false

false

automatic-recovery-on-initial-connection

是否启用初始连接时的自动恢复

类型:布尔值

false

true

connection-timeout

TCP 连接超时(毫秒); 0 被解释为没有超时

类型:整数

false

60000

default-routing-key

将消息发送到交换机时要使用的默认路由键

类型:字符串

false

``

default-ttl

如果指定,则发送的消息在队列中未传递之前可以保持处于死信状态的时间(毫秒)

类型:长整型

false

exchange.auto-delete

是否应在使用后删除交换机

类型:布尔值

false

false

exchange.declare

是否声明交换机;如果希望独立设置交换机,则设置为 false

类型:布尔值

false

true

exchange.durable

交换机是否持久

类型:布尔值

false

true

exchange.name

消息发布到或从中消费的交换机。 如果未设置,则使用通道名称。 如果设置为 "",则使用默认交换机

类型:字符串

false

exchange.type

交换机类型:direct、fanout、headers 或 topic(默认)

类型:字符串

false

topic

handshake-timeout

AMQP 0-9-1 协议握手超时(毫秒)

类型:整数

false

10000

主机

(rabbitmq-host)

代理主机名

类型:字符串

false

localhost

include-properties

当代理消息传递到事件总线时是否包含属性

类型:布尔值

false

false

max-inflight-messages

要并发写入 RabbitMQ 的最大消息数; 必须是正数

类型:长整型

false

1024

max-outgoing-internal-queue-size

传出内部队列的最大大小

类型:整数

false

network-recovery-interval

自动恢复在尝试重新连接之前将等待多长时间(毫秒)

类型:整数

false

5000

密码

(rabbitmq-password)

用于向代理进行身份验证的密码

类型:字符串

false

端口

(rabbitmq-port)

代理端口

类型:整数

false

5672

reconnect-attempts

(rabbitmq-reconnect-attempts)

重试连接的次数

类型:整数

false

100

reconnect-interval

(rabbitmq-reconnect-interval)

两次重新连接尝试之间的间隔(以秒为单位)

类型:整数

false

10

requested-channel-max

最初请求的最大通道数

类型:整数

false

2047

requested-heartbeat

最初请求的心跳间隔(秒),零表示无

类型:整数

false

60

ssl

(rabbitmq-ssl)

连接是否应使用 SSL

类型:布尔值

false

false

tracing.attribute-headers

一个逗号分隔的标头列表,应记录为 span 属性。 仅当 tracing.enabled=true 时才相关

类型:字符串

false

``

tracing.enabled

是否启用(默认)或禁用跟踪

类型:布尔值

false

true

trust-all

(rabbitmq-trust-all)

是否跳过信任证书验证

类型:布尔值

false

false

trust-store-password

(rabbitmq-trust-store-password)

JKS 信任存储的密码

类型:字符串

false

trust-store-path

(rabbitmq-trust-store-path)

JKS 信任存储的路径

类型:字符串

false

credentials-provider-name

(rabbitmq-credentials-provider-name)

用于向 RabbitMQ 客户端提供动态凭据的 RabbitMQ 凭据提供程序 bean 的名称

类型:字符串

false

use-nio

是否启用 NIO 套接字的使用

类型:布尔值

false

false

user

连接到代理时要使用的 AMQP 用户名

类型:字符串

false

guest

username

(rabbitmq-username)

用于向代理进行身份验证的用户名

类型:字符串

false

virtual-host

(rabbitmq-virtual-host)

连接到代理时要使用的虚拟主机

类型:字符串

false

/

相关内容