RabbitMQ 生产者属性

以下属性仅适用于 Rabbit 生产者,并且必须以 spring.cloud.stream.rabbit.bindings.<channelName>.producer. 为前缀。

然而,如果同一组属性需要应用于大多数绑定以避免重复,Spring Cloud Stream 支持为所有通道设置值,格式为 spring.cloud.stream.rabbit.default.<property>=<value>

此外,请记住绑定特定属性将覆盖其在默认设置中的等效值。

altermateExchange.binding.queue

如果交换机尚不存在,并且提供了 name,则将此队列绑定到备用交换机。将预置一个简单的持久队列,不带任何参数;如果需要更复杂的配置,您必须自己配置和绑定队列。

默认值:null alternateExchange.binding.routingKey 如果交换机尚不存在,并且提供了 namequeue,则使用此路由键将队列绑定到备用交换机。

默认值:#(用于默认的 topic 备用交换机)

alternateExchange.exists

备用交换机是否已存在,或者是否需要预置。

默认值:false

alternateExchange.type

如果备用交换机尚不存在,需要预置的交换机类型。

默认值:topic

alternateExchange.name

在目标交换机上配置一个备用交换机。

默认值:null

autoBindDlq

是否自动声明死信队列 (DLQ) 并将其绑定到绑定器死信交换机 (DLX)。

默认值:false

batchingEnabled

生产者是否启用消息批量处理。消息根据以下属性(在此列表的接下来的三个条目中描述):'batchSize'、batchBufferLimitbatchTimeout 批量处理到一个消息中。更多信息请参阅 Batching。另请参阅 接收批量消息

默认值:false

batchSize

启用批量处理时缓冲的消息数量。

默认值:100

batchBufferLimit

启用批量处理时的最大缓冲区大小。

默认值:10000

batchTimeout

启用批量处理时的批量超时时间。

默认值:5000

bindingRoutingKey

用于将队列绑定到交换机(如果 bindQueuetrue)的路由键。可以是多个键 - 参见 bindingRoutingKeyDelimiter。对于分区目的地,会在每个键后面附加 -n。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:#

bindingRoutingKeyDelimiter

当此值不为 null 时,'bindingRoutingKey' 被视为由该值分隔的键列表;通常使用逗号。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:null

bindQueue

是否声明队列并将其绑定到目标交换机。如果您已设置自己的基础设施并事先创建和绑定了队列,请将其设置为 false。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:true

compress

发送数据时是否应压缩。

默认值:false

confirmAckChannel

errorChannelEnabled 为 true 时,一个用于发送积极投递确认(即发布者确认)的通道。如果该通道不存在,将注册一个名为该名称的 DirectChannel。必须配置连接工厂以启用发布者确认。与 useConfirmHeader 互斥。

默认值:nullChannel(确认被丢弃)。

deadLetterQueueName

死信队列 (DLQ) 的名称。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:prefix+destination.dlq

deadLetterExchange

要分配给队列的死信交换机 (DLX)。仅当 autoBindDlqtrue 时相关。仅当提供了 requiredGroups 且仅对这些组应用。

默认值:'prefix+DLX'

deadLetterExchangeType

要分配给队列的死信交换机 (DLX) 的类型。仅当 autoBindDlqtrue 时相关。仅当提供了 requiredGroups 且仅对这些组应用。

默认值:'direct'

deadLetterRoutingKey

要分配给队列的死信路由键。仅当 autoBindDlqtrue 时相关。仅当提供了 requiredGroups 且仅对这些组应用。

默认值:destination

declareDlx

是否声明目标的死信交换机 (DLX)。仅当 autoBindDlqtrue 时相关。如果您已预配置 DLX,请设置为 false。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:true

declareExchange

是否声明目标交换机。

默认值:true

delayExpression

一个 SpEL 表达式,用于评估要应用于消息(x-delay 头部)的延迟时间。如果交换机不是延迟消息交换机,则此设置无效。

默认值:不设置 x-delay 头部。

delayedExchange

是否将交换机声明为 Delayed Message Exchange。需要在 Broker 上安装延迟消息交换机插件。x-delayed-type 参数被设置为 exchangeType

默认值:false

deliveryMode

投递模式。

默认值:PERSISTENT

dlqBindingArguments

将死信队列 (dlq) 绑定到死信交换机时应用的参数;与 headers deadLetterExchangeType 一起使用,以指定要匹配的头部。例如 …​dlqBindingArguments.x-match=any…​dlqBindingArguments.someHeader=someValue。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:空

dlqDeadLetterExchange

声明死信队列 (DLQ) 时,要分配给该队列的死信交换机 (DLX)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:none

dlqDeadLetterRoutingKey

声明死信队列 (DLQ) 时,要分配给该队列的死信路由键。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:none

dlqExpires

未使用的死信队列在删除前多久(毫秒)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no expiration(不过期)

dlqLazy

使用 x-queue-mode=lazy 参数声明死信队列。参阅 “Lazy Queues”。考虑使用策略而不是此设置,因为使用策略允许在不删除队列的情况下更改设置。仅在提供了 requiredGroups 且仅对这些组应用。

dlqMaxLength

死信队列中的最大消息数量。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

dlqMaxLengthBytes

死信队列中所有消息的总最大字节数。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

dlqMaxPriority

死信队列中消息的最大优先级(0-255)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:none

dlqQuorum.deliveryLimit

quorum.enabled=true 时,设置消息在被丢弃或进入死信队列前的投递限制。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:无 - 将应用 broker 的默认值。

dlqQuorum.enabled

当为 true 时,创建一个仲裁死信队列而不是经典队列。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false

dlqQuorum.initialGroupSize

quorum.enabled=true 时,设置初始仲裁大小。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:无 - 将应用 broker 的默认值。

dlqSingleActiveConsumer

设置为 true 会将 x-single-active-consumer 队列属性设置为 true。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false

dlqTtl

声明死信队列时要应用的默认生存时间(毫秒)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

exchangeAutoDelete

如果 declareExchangetrue,交换机是否应自动删除(在最后一个队列被移除后被移除)。

默认值:true

exchangeDurable

如果 declareExchangetrue,交换机是否应持久化(在 Broker 重启后仍然存在)。

默认值:true

exchangeType

交换机类型:对于非分区目的地是 directfanoutheaderstopic,对于分区目的地是 directheaderstopic

默认值:topic

expires

未使用的队列在删除前多久(毫秒)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no expiration(不过期)

headerPatterns

要映射到出站消息的头部模式。

默认值:['*'](所有头部)。

lazy

使用 x-queue-mode=lazy 参数声明队列。参阅 “Lazy Queues”。考虑使用策略而不是此设置,因为使用策略允许在不删除队列的情况下更改设置。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false

maxLength

队列中的最大消息数量。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

maxLengthBytes

队列中所有消息的总最大字节数。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

maxPriority

队列中消息的最大优先级(0-255)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:none

prefix

要添加到 destination 交换机名称的前缀。

默认值:""。

producerType

生产者类型。

  • AMQP 用于经典和仲裁队列的 AMQP 客户端

  • STREAM_SYNC RabbitMQ Streams 插件客户端,阻塞直到收到确认

  • STREAM_ASYNC RabbitMQ Streams 插件客户端,不阻塞

    默认值:""。

queueBindingArguments

将队列绑定到交换机时应用的参数;与 headers exchangeType 一起使用,以指定要匹配的头部。例如 …​queueBindingArguments.x-match=any…​queueBindingArguments.someHeader=someValue。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:空

queueNameGroupOnly

当为 true 时,从名称等于 group 的队列消费。否则,队列名称为 destination.group。例如,在使用 Spring Cloud Stream 从现有 RabbitMQ 队列消费时,这很有用。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false。

quorum.deliveryLimit

quorum.enabled=true 时,设置消息在被丢弃或进入死信队列前的投递限制。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:无 - 将应用 broker 的默认值。

quorum.enabled

当为 true 时,创建一个仲裁队列而不是经典队列。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false

quorum.initialGroupSize

quorum.enabled=true 时,设置初始仲裁大小。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:无 - 将应用 broker 的默认值。

routingKeyExpression

一个 SpEL 表达式,用于确定发布消息时使用的路由键。对于固定路由键,请使用 routingKey

默认值:destination 或用于分区目的地的 destination-<partition>

routingKey

一个字符串,定义发布消息时使用的固定路由键。

默认值:参阅 routingKeyExpression

singleActiveConsumer

设置为 true 会将 x-single-active-consumer 队列属性设置为 true。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:false

transacted

是否使用事务性通道。

默认值:false

ttl

声明队列时要应用的默认生存时间(毫秒)。仅在提供了 requiredGroups 且仅对这些组应用。

默认值:no limit(无限制)

useConfirmHeader

参阅 发布者确认。与 confirmAckChannel 互斥。

对于 RabbitMQ,内容类型头可以由外部应用程序设置。Spring Cloud Stream 支持它们作为扩展内部协议的一部分,该协议用于任何类型的传输——包括那些原生不支持头的传输(如 Kafka 0.11 版本之前)。