跳到主要内容

RabbitMQ 生产者属性

DeepSeek V3 中英对照 RabbitMQ Producer Properties

以下属性仅适用于 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 并将其绑定到 binder DLX。

默认值:false

batchingEnabled

是否启用生产者的消息批处理功能。消息会根据以下属性(在本列表接下来的三个条目中描述)被批量处理成一条消息:batchSizebatchBufferLimitbatchTimeout。有关更多信息,请参阅 批处理。另请参阅 接收批量消息

默认值:false

batchSize
批处理大小

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

默认值:100

batchBufferLimit

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

默认值:10000

批处理超时
batchtimeout

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

默认值:5000

bindingRoutingKey

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

默认值:#

bindingRoutingKeyDelimiter

当此值不为空时,'bindingRoutingKey' 将被视为由该值分隔的键列表;通常使用逗号作为分隔符。仅在提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:null

bindQueue

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

默认值:true

compress

是否应在发送时压缩数据。

默认值:false

confirmAckChannel

errorChannelEnabledtrue 时,将发送成功投递确认(即发布者确认)的通道。如果该通道不存在,将使用此名称注册一个 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

是否为目标声明死信交换。仅在 autoBindDlqtrue 时相关。如果你有预先配置的 DLX,请设置为 false。仅当提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:true

declareExchange

是否为目标声明交换。

默认值:true

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

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

delayedExchange 是一个用于处理延迟交换的组件或功能。它通常用于在消息队列或事件驱动系统中,允许消息或事件在一定时间延迟后再进行处理或传递。这种机制可以用于实现定时任务、重试机制或其他需要延迟执行的场景。

是否将 exchange 声明为 Delayed Message Exchange。需要在 broker 上安装 delayed message exchange 插件。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 时适用,并且仅适用于这些组。

默认值:无过期

dlqLazy

使用 x-queue-mode=lazy 参数声明死信队列。请参阅 “惰性队列”。考虑使用策略而不是此设置,因为使用策略可以在不删除队列的情况下更改设置。仅当提供 requiredGroups 时适用,并且仅适用于这些组。

dlqMaxLength

死信队列中的最大消息数。仅在提供 requiredGroups 时适用,且仅适用于这些组。

默认值:无限制

dlqMaxLengthBytes

死信队列中所有消息的最大总字节数。仅当提供 requiredGroups 时适用,并且仅适用于这些组。

默认值:无限制

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 时适用,并且仅适用于这些组。

默认值:无限制

exchangeAutoDelete

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

默认值:true

exchangeDurable

如果 declareExchangetrue,则指定交换器是否应为持久化的(在代理重启后仍然存在)。

默认值:true

exchangeType

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

默认值:topic

expires

在多长时间(以毫秒为单位)后删除未使用的队列。仅当提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:无过期

headerPatterns

将标头映射到出站消息的模式。

默认值:['*'](所有标题)。

lazy

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

默认值:false

maxLength

队列中的最大消息数。仅在提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:无限制

maxLengthBytes

队列中所有消息的总字节数的最大值。仅在提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:无限制

maxPriority

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

默认值:none

prefix

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

默认值:""

producerType

生产者类型。

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

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

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

    默认值:""。

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 时适用,并且仅适用于这些组。

默认值:无 - 将应用代理默认值。

quorum.enabled

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

默认值:false

quorum.initialGroupSize

quorum.enabled=true 时,设置初始的法定人数大小。仅当提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:无 - 将应用代理默认值。

routingKeyExpression

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

默认值:destinationdestination-<partition>(用于分区目标)。

routingKey

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

默认值:参见 routingKeyExpression

singleActiveConsumer

设置为 true 以将 x-single-active-consumer 队列属性设置为 true。仅在提供了 requiredGroups 时适用,并且仅适用于这些组。

默认值:false

transacted

是否使用事务通道。

默认值:false

ttl

声明队列时应用的默认生存时间(以毫秒为单位)。仅当提供了 requiredGroups 时适用,且仅适用于这些组。

默认值:无限制

useConfirmHeader

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

备注

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