Reactive Messaging RabbitMQ Connector Reference Documentation

本指南是 Getting Started with RabbitMQ 的配套指南。它更详细地解释了用于反应式消息传递的 RabbitMQ 连接器的配置和使用方法。

本文档并未涵盖连接器的所有详细信息。有关更多详细信息,请参阅 SmallRye Reactive Messaging website

RabbitMQ 连接器允许 Quarkus 应用程序使用 AMQP 0.9.1 协议发送和接收消息。可以在 the AMQP 0.9.1 specification 中找到有关该协议的更多详细信息。

RabbitMQ 连接器支持 AMQP 0-9-1,这与 AMQP 1.0 连接器所使用的 AMQP 1.0 协议非常不同。你可以将 AMQP 1.0 连接器与 RabbitMQ 搭配使用,如 AMQP 1.0 connector reference 中所述,尽管有 reduced functionality

该技术被认为是 {extension-status}。 有关可能状态的完整列表,请查看我们的 FAQ entry.

RabbitMQ connector extension

要使用该连接器,你需要添加 quarkus-messaging-rabbitmq 扩展。

你可以使用以下方式将扩展添加到你的项目:

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

或者只需将以下依赖项添加到你的项目中:

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

添加到你的项目后,你可以通过配置 connector 属性将 channels 映射到 RabbitMQ 交换或者队列:

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

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

outgoing 通道映射到 RabbitMQ 交换,而 incoming 通道映射到 RabbitMQ 队列,因为代理需要。

Configuring the RabbitMQ Broker access

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 代理。

Receiving RabbitMQ messages

假设你的应用程序接收了 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();
    }

}

Inbound Metadata

来自 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();
    // ...
});

Deserialization

连接器将传入的 RabbitMQ 消息转换为 Reactive Messaging Message<T> 实例。有效负载类型 T 取决于 RabbitMQ 接收的消息包络 content_typecontent_encoding 属性的值。

content_encoding content_type T

Value present

n/a

byte[]

No value

text/plain

String

No value

application/json

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

No value

Anything else

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 映射器。请查看 this guide 了解有关映射器配置的详细信息。

Acknowledgement

与 RabbitMQ 消息关联的反应式消息消息被确认时,它会通知代理消息已 accepted

是否需要明确确认消息取决于通道的 auto-acknowledgement 设置;如果设置为 true,则你的消息将在收到时自动确认。

Failure Management

如果从 RabbitMQ 消息生成的被 nack 的消息,则应用失败策略。RabbitMQ 连接器支持三种策略,由失败策略通道设置控制:

  • fail - 应用程序发生故障错误;将不会再处理 RabbitMQ 消息。RabbitMQ 消息标记为被拒绝。

  • accept - 此策略将 RabbitMQ 消息标记为 accepted。忽略失败后继续处理。

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

Sending RabbitMQ messages

Serialization

在发送 Message<T> 时,连接器将此消息转换为 RabbitMQ 消息。有效负载转换为 RabbitMQ 消息正文。

T RabbitMQ Message Body

primitive types or UUID/String

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

JsonObject or JsonArray

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

io.vertx.mutiny.core.buffer.Buffer

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

byte[]

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

Any other class

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

如果无法将消息有效内容序列化为 JSON,则中断消息 nacked

Outbound Metadata

在发送 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));

Acknowledgement

默认情况下,在代理确认消息时确认响应式消息传递 Message

Configuring the RabbitMQ Exchange/Queue

你可以使用通道配置上的属性来配置与通道关联的 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

Execution model and Blocking processing

响应式消息传递在 I/O 线程中调用你的方法。有关此主题的更多详细信息,请查看 Quarkus Reactive Architecture documentation。但是,你通常需要将响应式消息传递与数据库交互等阻塞式处理结合使用。为此,你需要使用 @Blocking 注解,指示处理为 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 {@s7} 上运行阻塞处理,请参阅 {@s8}。

Customizing the underlying RabbitMQ client

连接器在下面使用 Vert.x RabbitMQ 客户端。关于此客户端的更多详细信息,请参见 Vert.x website

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

Health reporting

如果你使用带有 quarkus-smallrye-health 扩展的 RabbitMQ 连接器,则它有助于准备和运行状况探测。RabbitMQ 连接器报告连接器管理的每个通道的准备和运行状况。

要禁用运行状况报告,请将通道的 health-enabled 属性设置为 false。

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

在出站(将记录发送到 RabbitMQ)侧,检查会验证发送器未断开与代理的连接;发送器 may 仍处于初始化状态(尚未尝试连接),但将其视为 live/ready。

请注意,消息处理失败会标记该消息,然后由 failure-strategy 处理。由 failure-strategy 报告失败并影响检查结果。fail 失败策略会报告失败,因此检查将报告故障。

Dynamic Credentials

Quarkus 和 RabbitMQ 连接器支持 Vault’s RabbitMQ secrets engine 以生成短期动态凭证。这允许 Vault 定期创建和取消 RabbitMQ 凭证。

首先,我们需要启用 Vault 的 rabbitmq 秘密引擎,使用 RabbitMQ 的连接和认证信息对其进行配置,并创建一个 Vault 角色 my-role(用正在运行 RabbitMQ 容器的实际主机替换 10.0.0.3):

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 中创建用户,我们需要配置 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 Connector Configuration Reference

Incoming channel configuration

Attribute (alias) Description Mandatory Default

[role="no-hyphens"]username

[role="no-hyphens"](rabbitmq-username)

用于对代理进行身份验证的用户名类型:string

false

[role="no-hyphens"]password

[role="no-hyphens"](rabbitmq-password)

用于对代理进行身份验证的密码类型:string

false

[role="no-hyphens"]host

[role="no-hyphens"](rabbitmq-host)

The broker hostname

Type: string

false

localhost

[role="no-hyphens"]port

[role="no-hyphens"](rabbitmq-port)

The broker port

Type: int

false

5672

[role="no-hyphens"]ssl

[role="no-hyphens"](rabbitmq-ssl)

连接是否应使用 SSL 类型:boolean

false

false

[role="no-hyphens"]trust-all

[role="no-hyphens"](rabbitmq-trust-all)

是否跳过信任证书验证 类型:boolean

false

false

[role="no-hyphens"]trust-store-path

[role="no-hyphens"](rabbitmq-trust-store-path)

JKS 信任库的路径 类型:string

false

[role="no-hyphens"]trust-store-password

[role="no-hyphens"](rabbitmq-trust-store-password)

JKS 信任库的密码 类型:string

false

[role="no-hyphens"]credentials-provider-name

[role="no-hyphens"](rabbitmq-credentials-provider-name)

用于向 RabbitMQ 客户端提供动态凭据的 RabbitMQ 凭据提供程序 Bean 的名称 类型:string

false

[role="no-hyphens"]connection-timeout

TCP 连接超时(毫秒);0 解释为无超时类型:int

false

60000

[role="no-hyphens"]handshake-timeout

AMQP 0-9-1 协议握手超时(毫秒)类型:int

false

10000

[role="no-hyphens"]automatic-recovery-enabled

是否启用自动连接恢复类型:boolean

false

false

[role="no-hyphens"]automatic-recovery-on-initial-connection

是否启用初始连接上的自动恢复类型:boolean

false

true

[role="no-hyphens"]reconnect-attempts

[role="no-hyphens"](rabbitmq-reconnect-attempts)

重新连接尝试的次数类型:int

false

100

[role="no-hyphens"]reconnect-interval

[role="no-hyphens"](rabbitmq-reconnect-interval)

两次重连尝试之间的间隔(秒)类型:int

false

10

[role="no-hyphens"]network-recovery-interval

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

false

5000

[role="no-hyphens"]user

连接代理时使用的 AMQP 用户名类型:string

false

guest

[role="no-hyphens"]include-properties

在事件总线上传递代理消息时是否包含属性类型:boolean

false

false

[role="no-hyphens"]requested-channel-max

最初请求的最大通道号类型:int

false

2047

[role="no-hyphens"]requested-heartbeat

最初请求的心跳间隔(秒),无则为零类型:int

false

60

[role="no-hyphens"]use-nio

是否启用了 NIO 套接字的使用类型:boolean

false

false

[role="no-hyphens"]virtual-host

[role="no-hyphens"](rabbitmq-virtual-host)

连接到代理时要使用的虚拟主机类型:string

false

/

[role="no-hyphens"]exchange.name

消息发布或消费的交换。如果没有设置,将使用通道名称。如果设置为 "",则使用默认交换类型:string

false

[role="no-hyphens"]exchange.durable

交换是否持久类型:boolean

false

true

[role="no-hyphens"]exchange.auto-delete

是否在使用后删除交换类型:boolean

false

false

[role="no-hyphens"]exchange.type

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

false

topic

[role="no-hyphens"]exchange.declare

是否声明交换;如果应该独立设置交换,则设置为 false 类型:boolean

false

true

[role="no-hyphens"]tracing.enabled

启用(默认)或禁用跟踪类型: boolean

false

true

[role="no-hyphens"]tracing.attribute-headers

应记录为 span 属性的标头(用逗号分隔)。仅在 tracing.enabled=true 时相关类型:string

false

``

[role="no-hyphens"]queue.name

使用者消费消息的队列。类型:string

true

[role="no-hyphens"]queue.durable

队列是否持久类型:boolean

false

true

[role="no-hyphens"]queue.exclusive

队列是否供独享使用类型:boolean

false

false

[role="no-hyphens"]queue.auto-delete

是否在使用后删除队列类型:boolean

false

false

[role="no-hyphens"]queue.declare

是否声明队列和绑定;如果应该独立设置这些队列和绑定,则设置为 false 类型:boolean

false

true

[role="no-hyphens"]queue.ttl

如果已指定,则消息在队列中停留的时间(毫秒数)在转为死信之前 Type: long

false

[role="no-hyphens"]queue.single-active-consumer

如果设置为 true,则只有一个使用者可以主动消费消息类型:boolean

false

false

[role="no-hyphens"]queue.x-queue-type

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

false

classic

[role="no-hyphens"]queue.x-queue-mode

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

false

default

[role="no-hyphens"]max-incoming-internal-queue-size

传入内部队列的最大大小类型:int

false

[role="no-hyphens"]connection-count

要为此队列创建的 RabbitMQ 连接数。可能需要使用单个客户端从分片队列使用。类型:int

false

1

[role="no-hyphens"]auto-bind-dlq

是否自动声明 DLQ 并将其绑定到 binder DLX 类型:boolean

false

false

[role="no-hyphens"]dead-letter-queue-name

如果未提供,将默认为追加 '.dlq' 的队列名称 Type: string

false

[role="no-hyphens"]dead-letter-exchange

分配给队列的 DLX。仅在 auto-bind-dlq 为 true 时相关 Type: string

false

DLX

[role="no-hyphens"]dead-letter-exchange-type

分配给队列的 DLX 类型。仅在 auto-bind-dlq 为 true 时相关 Type: string

false

direct

[role="no-hyphens"]dead-letter-routing-key

分配给队列的死信路由键;如果未提供,将默认为队列名称 Type: string

false

[role="no-hyphens"]dlx.declare

是否声明死信交换绑定。仅在 auto-bind-dlq 为 true 时相关;如果希望独立设置这些内容,则设置为 false Type: boolean

false

false

[role="no-hyphens"]dead-letter-queue-type

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

false

classic

[role="no-hyphens"]dead-letter-queue-mode

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

false

default

[role="no-hyphens"]failure-strategy

当 RabbitMQ 消息被 nacked 时应用的失败策略。可接受的值为 failacceptreject(默认值)Type: string

false

reject

[role="no-hyphens"]broadcast

接收到的 RabbitMQ 消息是否必须分派至多个 subscribers Type: boolean

false

false

[role="no-hyphens"]auto-acknowledgement

接收时是否必须确认接收的 RabbitMQ 消息;如果为 true,则传递构成确认 Type: boolean

false

false

[role="no-hyphens"]keep-most-recent

是否丢弃旧消息而不是最新消息 Type: boolean

false

false

[role="no-hyphens"]routing-keys

用逗号分隔的路由键列表,将队列绑定至交换 Type: string

false

#

[role="no-hyphens"]content-type-override

覆盖传入消息的 content_type 属性,应该为一个有效的 MIME 类型Type: string

false

[role="no-hyphens"]max-outstanding-messages

由连接器一次处理的最大未完成/未确认消息数;必须为正数 Type: int

false

Outgoing channel configuration

Attribute (alias) Description Mandatory Default

[role="no-hyphens"]automatic-recovery-enabled

是否启用自动连接恢复类型:boolean

false

false

[role="no-hyphens"]automatic-recovery-on-initial-connection

是否启用初始连接上的自动恢复类型:boolean

false

true

[role="no-hyphens"]connection-timeout

TCP 连接超时(毫秒);0 解释为无超时类型:int

false

60000

[role="no-hyphens"]default-routing-key

将消息发送至交换时使用的默认路由键 Type: string

false

``

[role="no-hyphens"]default-ttl

如果指定,则在发送消息成为死信之前,它们可以未传递保留在队列中的时间(毫秒) Type: long

false

[role="no-hyphens"]exchange.auto-delete

是否在使用后删除交换类型:boolean

false

false

[role="no-hyphens"]exchange.declare

是否声明交换;如果应该独立设置交换,则设置为 false 类型:boolean

false

true

[role="no-hyphens"]exchange.durable

交换是否持久类型:boolean

false

true

[role="no-hyphens"]exchange.name

消息发布或消费的交换。如果没有设置,将使用通道名称。如果设置为 "",则使用默认交换类型:string

false

[role="no-hyphens"]exchange.type

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

false

topic

[role="no-hyphens"]handshake-timeout

AMQP 0-9-1 协议握手超时(毫秒)类型:int

false

10000

[role="no-hyphens"]host

[role="no-hyphens"](rabbitmq-host)

The broker hostname

Type: string

false

localhost

[role="no-hyphens"]include-properties

在事件总线上传递代理消息时是否包含属性类型:boolean

false

false

[role="no-hyphens"]max-inflight-messages

并发写入 RabbitMQ 的最大消息数;必须为正数 Type: long

false

1024

[role="no-hyphens"]max-outgoing-internal-queue-size

传出的内部队列最大大小 Type: int

false

[role="no-hyphens"]network-recovery-interval

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

false

5000

[role="no-hyphens"]password

[role="no-hyphens"](rabbitmq-password)

用于对代理进行身份验证的密码类型:string

false

[role="no-hyphens"]port

[role="no-hyphens"](rabbitmq-port)

The broker port

Type: int

false

5672

[role="no-hyphens"]reconnect-attempts

[role="no-hyphens"](rabbitmq-reconnect-attempts)

重新连接尝试的次数类型:int

false

100

[role="no-hyphens"]reconnect-interval

[role="no-hyphens"](rabbitmq-reconnect-interval)

两次重连尝试之间的间隔(秒)类型:int

false

10

[role="no-hyphens"]requested-channel-max

最初请求的最大通道号类型:int

false

2047

[role="no-hyphens"]requested-heartbeat

最初请求的心跳间隔(秒),无则为零类型:int

false

60

[role="no-hyphens"]ssl

[role="no-hyphens"](rabbitmq-ssl)

连接是否应使用 SSL 类型:boolean

false

false

[role="no-hyphens"]tracing.attribute-headers

应记录为 span 属性的标头(用逗号分隔)。仅在 tracing.enabled=true 时相关类型:string

false

``

[role="no-hyphens"]tracing.enabled

启用(默认)或禁用跟踪类型: boolean

false

true

[role="no-hyphens"]trust-all

[role="no-hyphens"](rabbitmq-trust-all)

是否跳过信任证书验证 类型:boolean

false

false

[role="no-hyphens"]trust-store-password

[role="no-hyphens"](rabbitmq-trust-store-password)

JKS 信任库的密码 类型:string

false

[role="no-hyphens"]trust-store-path

[role="no-hyphens"](rabbitmq-trust-store-path)

JKS 信任库的路径 类型:string

false

[role="no-hyphens"]credentials-provider-name

[role="no-hyphens"](rabbitmq-credentials-provider-name)

用于向 RabbitMQ 客户端提供动态凭据的 RabbitMQ 凭据提供程序 Bean 的名称 类型:string

false

[role="no-hyphens"]use-nio

是否启用了 NIO 套接字的使用类型:boolean

false

false

[role="no-hyphens"]user

连接代理时使用的 AMQP 用户名类型:string

false

guest

[role="no-hyphens"]username

[role="no-hyphens"](rabbitmq-username)

用于对代理进行身份验证的用户名类型:string

false

[role="no-hyphens"]virtual-host

[role="no-hyphens"](rabbitmq-virtual-host)

连接到代理时要使用的虚拟主机类型:string

false

/