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
如果交换器尚不存在,并且提供了 name
和 queue
,则使用此路由键将队列绑定到备用交换器。
默认值:#
(用于默认的 topic
备用交换)
alternateExchange.exists
备用交换是否存在,或是否需要配置。
默认值:false
alternateExchange.type
如果备用交换器尚不存在,则要配置的交换器类型。
默认值:topic
alternateExchange.name
在目标交换器上配置一个备用交换器。
默认值:null
autoBindDlq
是否自动声明 DLQ 并将其绑定到 binder DLX。
默认值:false
。
batchingEnabled
默认值:false
。
batchSize
批处理大小
启用批处理时要缓冲的消息数量。
默认值:100
。
batchBufferLimit
启用批处理时的最大缓冲区大小。
默认值:10000
。
批处理超时
启用批处理时的批处理超时时间。
默认值:5000
。
bindingRoutingKey
用于将队列绑定到交换机的路由键(如果 bindQueue
为 true
)。可以是多个键 - 请参阅 bindingRoutingKeyDelimiter
。对于分区目的地,每个键会附加 -n
。仅在提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:#
。
bindingRoutingKeyDelimiter
当此值不为空时,'bindingRoutingKey' 将被视为由该值分隔的键列表;通常使用逗号作为分隔符。仅在提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:null
。
bindQueue
是否声明队列并将其绑定到目标交换机。如果您已经设置了自己的基础设施并且之前已经创建并绑定了队列,请将其设置为 false
。仅在提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:true
。
compress
是否应在发送时压缩数据。
默认值:false
。
confirmAckChannel
当 errorChannelEnabled
为 true
时,将发送成功投递确认(即发布者确认)的通道。如果该通道不存在,将使用此名称注册一个 DirectChannel
。连接工厂必须配置为启用发布者确认。与 useConfirmHeader
互斥。
默认值:nullChannel
(确认信息被丢弃)。
deadLetterQueueName
DLQ 的名称仅适用于提供了 requiredGroups
的情况,并且仅适用于这些组。
默认值:prefix+destination.dlq
deadLetterExchange
分配给队列的 DLX。仅当 autoBindDlq
为 true
时相关。仅当提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:'prefix+DLX'
deadLetterExchangeType
要分配给队列的 DLX 类型。仅在 autoBindDlq
为 true
时相关。仅在提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:'direct'
deadLetterRoutingKey
分配给队列的死信路由键。仅在 autoBindDlq
为 true
时相关。仅当提供了 requiredGroups
时适用,并且仅适用于这些组。
默认值:destination
declareDlx
是否为目标声明死信交换。仅在 autoBindDlq
为 true
时相关。如果你有预先配置的 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
如果 declareExchange
为 true
,是否应将交换机设置为自动删除(在最后一个队列被移除后,它将被删除)。
默认值:true
。
exchangeDurable
如果 declareExchange
为 true
,则指定交换器是否应为持久化的(在代理重启后仍然存在)。
默认值:true
。
exchangeType
交换类型:对于非分区目的地为 direct
、fanout
、headers
或 topic
,对于分区目的地为 direct
、headers
或 topic
。
默认值: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
。
默认值:destination
或 destination-<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 之前版本)。