ackTimeout
(N/A)spring-doc.cadn.net.cn
|
当设置为 messagesPerAck 时,此超时时间将用作发送确认(ack)的替代方案。当新消息到达时,未确认消息的数量会与 messagesPerAck 进行比较,且自上次确认以来的时间会与该值进行比较。如果任一条件满足 true,则消息会被确认。当没有新消息到达且存在未确认消息时,此超时时间仅为近似值,因为该条件仅每隔 monitorInterval 才检查一次。另请参见本表中的 messagesPerAck 和 monitorInterval。spring-doc.cadn.net.cn |
|
|
|
acknowledgeMode (acknowledge)spring-doc.cadn.net.cn
|
-
NONE: 不发送确认(与 channelTransacted=true 不兼容)。 RabbitMQ 将其称为“自动确认”(autoack),因为代理假定所有消息均已确认,无需消费者采取任何操作。spring-doc.cadn.net.cn
-
MANUAL: 侦听器必须通过调用 Channel.basicAck() 来确认所有消息。spring-doc.cadn.net.cn
-
AUTO: 容器会自动确认消息,除非 MessageListener 抛出异常。 注意:acknowledgeMode 与 channelTransacted 是互补的——如果通道是事务性的,除了确认(ack)外,代理还要求提交通知。 这是默认模式。 另请参阅 batchSize。spring-doc.cadn.net.cn
|
|
|
|
adviceChain
(advice-chain)spring-doc.cadn.net.cn
|
应用于监听器执行的一组AOP通知。 这可用于应用额外的横向关注点,例如在代理死亡时自动重试。 注意:只要代理仍然存活,简单的AMQP错误后的重新连接由CachingConnectionFactory处理。spring-doc.cadn.net.cn |
|
|
|
afterReceivePostProcessors
(N/A)spring-doc.cadn.net.cn
|
一个包含 MessagePostProcessor 个实例的数组,这些实例在调用监听器之前被调用。spring-doc.cadn.net.cn spring-doc.cadn.net.cn 后处理器可以实现 PriorityOrdered 或 Ordered。spring-doc.cadn.net.cn 该数组按顺序排序,无序成员最后调用。spring-doc.cadn.net.cn 如果一个后处理器返回 null,则消息将被丢弃(并根据需要进行确认)。spring-doc.cadn.net.cn spring-doc.cadn.net.cn |
|
|
|
alwaysRequeueWithTxManagerRollback
(N/A)spring-doc.cadn.net.cn
|
设置为 true,以在配置了事务管理器时,在回滚时始终重新入队消息。spring-doc.cadn.net.cn |
|
|
|
autoDeclare
(auto-declare)spring-doc.cadn.net.cn
|
当设置为 true(默认值)时,容器会在启动期间检测到至少一个队列缺失(例如该队列为 auto-delete 或已过期的队列)的情况下,使用 RabbitAdmin 重新声明所有 AMQP 对象(队列、交换机、绑定),但若因任何原因导致队列缺失,则仍会继续执行重新声明操作。要禁用此行为,请将此属性设置为 false。注意:如果容器的所有队列均缺失,则容器将无法启动。spring-doc.cadn.net.cn
|
|
在 1.6 版本之前,如果上下文中存在多个管理员,则容器会随机选择其中一个。如果没有管理员,它会内部创建一个。无论哪种情况,都可能导致意外结果。从 1.6 版本开始,为使 autoDeclare 正常工作,上下文中必须恰好存在一个 RabbitAdmin,或者需通过容器的 rabbitAdmin 属性配置对特定实例的引用。 |
|
|
|
|
autoStartup
(auto-startup)spring-doc.cadn.net.cn
|
标志,用于指示容器是否应在 ApplicationContext 时启动(作为 SmartLifecycle 回调的一部分,这些回调发生在所有 Bean 初始化之后)。 默认值为 true,但如果您的消息代理在启动时可能不可用,您可以将其设置为 false,并在稍后手动调用 start(),以确保消息代理已就绪。spring-doc.cadn.net.cn |
|
|
|
batchSize
(transaction-size)
(batch-size)spring-doc.cadn.net.cn
|
当与 acknowledgeMode 设置为 AUTO 一起使用时,容器会在发送确认(ack)之前尝试处理最多此数量的消息(每个消息的等待时间不超过接收超时设置)。 这也是事务性通道提交的时候。 如果 prefetchCount 小于 batchSize,则会将其增加至与 batchSize 相等。spring-doc.cadn.net.cn |
|
|
|
batchingStrategy
(N/A)spring-doc.cadn.net.cn
|
处理消息批处理时所采用的策略。默认值 SimpleDebatchingStrategy。参见 批处理 以及 带批处理的 @RabbitListener。spring-doc.cadn.net.cn |
|
|
|
channelTransacted
(channel-transacted)spring-doc.cadn.net.cn
|
布尔标志,用于指示应在事务中确认所有消息(手动或自动确认)。spring-doc.cadn.net.cn |
|
|
|
concurrency
(N/A)spring-doc.cadn.net.cn
|
m-n 每个监听器的并发消费者数量范围(最小值,最大值)。
如果仅提供 n,则 n 表示固定数量的消费者。
参见 监听器并发性。spring-doc.cadn.net.cn
|
|
|
|
concurrentConsumers (concurrency)spring-doc.cadn.net.cn
|
每个监听器初始启动的并发消费者数量。请参阅 监听器并发性。对于 StLC,并发性通过重载的 superStream 方法进行控制;请参阅 使用单个活跃消费者消费超流。spring-doc.cadn.net.cn |
|
|
|
connectionFactory
(connection-factory)spring-doc.cadn.net.cn
|
对 ConnectionFactory 的引用。 在使用 XML 命名空间进行配置时,默认引用的 Bean 名称为 rabbitConnectionFactory。spring-doc.cadn.net.cn |
|
|
|
consecutiveActiveTrigger
(min-consecutive-active)spring-doc.cadn.net.cn
|
消费者在不发生接收超时的情况下,连续接收到的最少消息数量,以考虑启动新消费者。 也受 'batchSize' 影响。 参见 监听器并发性。 默认值:10。spring-doc.cadn.net.cn |
|
|
|
consecutiveIdleTrigger
(min-consecutive-idle)spring-doc.cadn.net.cn
|
消费者必须经历的最少接收超时次数,才能考虑停止该消费者。也受 'batchSize' 影响。请参阅 监听器并发。默认值:10。spring-doc.cadn.net.cn |
|
|
|
consumerBatchEnabled
(batch-enabled)spring-doc.cadn.net.cn
|
如果 MessageListener 支持此功能,将其设置为 true 可启用离散消息的批处理,最多可达到 batchSize;若在 receiveTimeout 时间内未收到新消息,或收集批处理消息的时间超过 batchReceiveTimeout,则会发送部分批处理消息。当此值为 false 时,仅支持由生产者创建的批处理;详见 批处理。spring-doc.cadn.net.cn |
|
|
|
consumerCustomizer
(N/A)spring-doc.cadn.net.cn
|
A ConsumerCustomizer bean used to modify stream consumers created by the container.spring-doc.cadn.net.cn |
|
|
|
consumerStartTimeout
(N/A)spring-doc.cadn.net.cn
|
消费者线程启动前等待的毫秒数。 如果此时间已过,将记录错误日志。 可能发生这种情况的一个例子是:配置的 taskExecutor 线程数不足以支持容器 concurrentConsumers 的需求。spring-doc.cadn.net.cn
参见 线程和异步消费者。 默认值:60000(一分钟)。spring-doc.cadn.net.cn |
|
|
|
consumerTagStrategy
(consumer-tag-strategy)spring-doc.cadn.net.cn
|
设置 ConsumerTagStrategy 的实现,以确保为每个消费者创建一个(唯一的)标签。spring-doc.cadn.net.cn |
|
|
|
consumersPerQueue
(consumers-per-queue)spring-doc.cadn.net.cn
|
为每个配置的队列创建的消费者数量。 参见 监听器并发性。spring-doc.cadn.net.cn |
|
|
|
consumeDelay
(N/A)spring-doc.cadn.net.cn
|
当使用 RabbitMQ 分片插件 与 concurrentConsumers > 1 配合时,可能会出现竞态条件,导致消费者无法在各分片间均匀分布。请使用此属性在消费者启动之间添加短暂延迟,以避免该竞态条件。您应通过实验来确定适用于您环境的合适延迟时间。spring-doc.cadn.net.cn |
|
|
|
debatchingEnabled
(N/A)spring-doc.cadn.net.cn
|
当为 true 时,监听器容器将解批处理批量消息,并逐条调用监听器处理每条消息。 从版本 2.2.7 开始,由生产者创建的批处理 将在监听器为 BatchMessageListener 或 ChannelAwareBatchMessageListener 时作为 List<Message> 解批处理。 否则,批处理中的消息将逐条呈现。 默认值为 true。 参见 批处理 和 带批处理的 @RabbitListener。spring-doc.cadn.net.cn |
|
|
|
declarationRetries
(declaration-retries)spring-doc.cadn.net.cn
|
当主动队列声明失败时,重试次数。被动队列声明发生在消费者启动时,或在从多个队列消费时,初始化期间并非所有队列都可用时发生。当所有配置的队列均无法通过被动声明(由于任何原因)且重试次数耗尽后,容器行为由前面所述的 missingQueuesFatal 属性控制。默认值:三次重试(共计四次尝试)。spring-doc.cadn.net.cn |
|
|
|
defaultRequeueRejected
(requeue-rejected)spring-doc.cadn.net.cn
|
确定因监听器抛出异常而被拒绝的消息是否应重新入队。spring-doc.cadn.net.cn |
|
|
|
errorHandler
(error-handler)spring-doc.cadn.net.cn
|
对一个ErrorHandler策略的引用,用于处理在MessageListener执行期间可能发生的任何未捕获异常。默认值:ConditionalRejectingErrorHandlerspring-doc.cadn.net.cn |
|
|
|
exclusive (exclusive)spring-doc.cadn.net.cn
|
确定此容器中的单个消费者是否独占访问队列。当此值为 true 时,容器的并发数必须为 1。如果其他消费者拥有独占访问权,容器将根据 recovery-interval 或 recovery-back-off 的设置尝试恢复该消费者。在使用命名空间时,此属性会与队列名称一起出现在 <rabbit:listener/> 元素上。默认值: false。spring-doc.cadn.net.cn |
|
|
|
exclusiveConsumerExceptionLogger
(N/A)spring-doc.cadn.net.cn
|
当独占消费者无法访问队列时使用的异常记录器。 默认情况下,此日志以 WARN 级别记录。spring-doc.cadn.net.cn |
|
|
|
failedDeclarationRetryInterval
(failed-declaration
-retry-interval)spring-doc.cadn.net.cn
|
被动队列声明重试尝试之间的间隔时间。<br/>被动队列声明发生在消费者启动时,或者在从多个队列中消费时,初始化期间并非所有队列都可用时。<br/>默认值:5000(五秒)。spring-doc.cadn.net.cn |
|
|
|
forceCloseChannel
(N/A)spring-doc.cadn.net.cn
|
如果消费者在 shutdownTimeout 时间内未响应关闭请求,且此值为 true,则通道将被关闭,导致任何未确认的消息被重新入队。从 2.0 版本开始,默认值为 true。您可以将其设置为 false 以恢复旧版行为。spring-doc.cadn.net.cn |
|
|
|
forceStop
(N/A)spring-doc.cadn.net.cn
|
设置为 true 以在容器停止时停止(当前记录处理完毕后);导致所有预取的消息被重新入队。spring-doc.cadn.net.cn spring-doc.cadn.net.cn 默认情况下,容器将在停止前取消消费者并处理所有预取的消息。spring-doc.cadn.net.cn 自版本 2.4.14、3.0.6 起可用。spring-doc.cadn.net.cn 默认值为 false。spring-doc.cadn.net.cn spring-doc.cadn.net.cn |
|
|
|
globalQos
(global-qos)spring-doc.cadn.net.cn
|
当为 true 时,prefetchCount 将全局应用于通道,而非应用于通道上的每个消费者。 有关更多信息,请参阅 basicQos.global。spring-doc.cadn.net.cn |
|
|
|
(group)spring-doc.cadn.net.cn |
仅在使用命名空间时才可用。 指定后,将注册一个类型为 Collection<MessageListenerContainer> 的 Bean,并将每个 <listener/> 元素的容器添加到集合中。 这允许通过遍历该集合来启动和停止整个容器组。 如果多个 <listener-container/> 元素具有相同的组值,则集合中的容器将构成所有此类指定容器的聚合体。spring-doc.cadn.net.cn |
|
|
|
idleEventInterval
(idle-event-interval)spring-doc.cadn.net.cn
|
查看 检测空闲异步消费者。spring-doc.cadn.net.cn |
|
|
|
javaLangErrorHandler
(N/A)spring-doc.cadn.net.cn
|
当容器线程捕获到 Error 时调用的 AbstractMessageListenerContainer.JavaLangErrorHandler 实现。默认实现会调用 System.exit(99);若要恢复到先前的行为(即不执行任何操作),请添加一个空操作处理器。spring-doc.cadn.net.cn |
|
|
|
maxConcurrentConsumers
(max-concurrency)spring-doc.cadn.net.cn
|
最大并发消费者数量,如果需要,可按需启动。 必须大于或等于 'concurrentConsumers'。 详见 监听器并发性。spring-doc.cadn.net.cn |
|
|
|
messagesPerAck
(N/A)spring-doc.cadn.net.cn
|
在确认(acks)之间接收的消息数量。 使用此设置可减少发送至代理(broker)的确认次数(但会增加消息被重复投递的可能性)。 通常,您仅应在高吞吐量监听器容器中设置此属性。 如果设置了此值,且某条消息被拒绝(抛出异常),则已挂起的确认将被提交,而失败的消息会被拒绝。 不支持与事务性通道(transacted channels)一起使用。 如果 prefetchCount 小于 messagesPerAck,则会将其增大以匹配 messagesPerAck。 默认:每条消息均进行确认。 另请参见本表中的 ackTimeout。spring-doc.cadn.net.cn |
|
|
|
mismatchedQueuesFatal
(mismatched-queues-fatal)spring-doc.cadn.net.cn
|
当容器启动时,如果此属性为 true(默认值: false),容器会检查上下文中声明的所有队列是否与代理上已存在的队列兼容。如果存在不匹配的属性(例如 auto-delete)或参数(例如 x-message-ttl),容器(以及应用上下文)将因致命异常而无法启动。spring-doc.cadn.net.cn
|
|
如果代理在初始启动期间不可用,容器将启动,并在连接建立时检查相关条件。 |
|
|
检查针对上下文中的所有队列进行,而不仅限于特定监听器配置使用的队列。如果希望将检查限制为仅容器所使用的队列,则应为该容器配置一个单独的 RabbitAdmin,并使用 rabbitAdmin 属性提供对其引用。有关更多信息,请参阅 条件声明。 |
|
|
|
|
missingQueuesFatal
(missing-queues-fatal)spring-doc.cadn.net.cn
|
当设置为 true(默认值)时,如果配置的任意队列在代理上均不可用,则视为致命错误。这会导致应用上下文在启动期间无法初始化。此外,当容器运行时队列被删除,默认情况下,消费者将尝试重新连接队列三次(每次间隔五秒),若这些尝试失败,则会停止容器。spring-doc.cadn.net.cn
<util:properties
id="spring.amqp.global.properties">
<prop key="mlc.missing.queues.fatal">
false
</prop>
</util:properties>
|
|
|
|
monitorInterval
(monitor-interval)spring-doc.cadn.net.cn
|
通过 DMLC,任务会按此间隔安排运行,以监控消费者的当前状态并恢复任何已失败的消费者。spring-doc.cadn.net.cn |
|
|
|
noLocal
(N/A)spring-doc.cadn.net.cn
|
设置为 true 以禁用从服务器向消费者传递在相同频道连接上发布的消息。spring-doc.cadn.net.cn |
|
|
|
phase (phase)spring-doc.cadn.net.cn
|
当 autoStartup 为 true 时,表示此容器应在哪个生命周期阶段内启动和停止。数值越小,该容器启动得越早,停止得越晚。默认值为 Integer.MAX_VALUE,表示该容器尽可能晚地启动,并尽可能早地停止。spring-doc.cadn.net.cn |
|
|
|
possibleAuthenticationFailureFatal
(possible-authentication-failure-fatal)spring-doc.cadn.net.cn
|
当设置为 true(SMLC 的默认值)时,如果在连接过程中抛出 PossibleAuthenticationFailureException,则视为致命错误。这会导致应用程序上下文在启动期间无法完成初始化(若容器配置为自动启动)。spring-doc.cadn.net.cn
<util:properties
id="spring.amqp.global.properties">
<prop
key="mlc.possible.authentication.failure.fatal">
false
</prop>
</util:properties>
|
|
|
|
prefetchCount (prefetch)spring-doc.cadn.net.cn
|
每个消费者可同时存在的未确认消息数量。 该值越高,消息传递速度越快,但非顺序处理的风险也越高。 如果 acknowledgeMode 为 NONE,则忽略此设置。 必要时,该值会调整以匹配 batchSize 或 messagePerAck。 自 2.0 版本起默认值为 250。 您可以将其设为 1,以恢复之前的处理行为。spring-doc.cadn.net.cn
|
|
在某些场景下,预取值应设置得较低——例如,当消息较大时,尤其是处理速度较慢(消息可能在客户端进程中累积成大量内存),并且需要严格的消息顺序时(此时应将预取值重置为1)。</p><p>此外,在低频消息传递且存在多个消费者(包括单个监听容器实例内的并发)的情况下,您可能希望降低预取值,以实现消息在各消费者之间更均衡的分配。 |
|
|
|
|
rabbitAdmin (admin)spring-doc.cadn.net.cn
|
当监听器容器监听至少一个自动删除队列,并在启动时发现该队列缺失时,容器将使用 RabbitAdmin 来声明该队列以及任何相关的绑定和交换机。如果这些元素被配置为使用条件声明(参见 条件声明),则容器必须使用已配置的 admin 来声明这些元素。请在此处指定 admin。仅在使用自动删除队列并结合条件声明时才需要此设置。如果您希望自动删除队列直到容器启动后才进行声明,请将 admin 上的 auto-startup 设置为 false。默认值为 RabbitAdmin,它会声明所有非条件性元素。spring-doc.cadn.net.cn |
|
|
|
receiveTimeout
(receive-timeout)spring-doc.cadn.net.cn
|
等待每个消息的最大时间。 如果 acknowledgeMode=NONE,此设置影响甚微——容器会不断循环并请求另一条消息。 对于事务性 Channel 且配置为 batchSize > 1 的情况,该设置影响最大,可能导致已消费的消息在超时到期前未被确认。 当 consumerBatchEnabled 为 true 时,若在此超时发生前批处理尚未完成,则将提前交付部分批处理。spring-doc.cadn.net.cn |
|
|
|
batchReceiveTimeout
(batch-receive-timeout)spring-doc.cadn.net.cn
|
收集批处理消息的超时时间(毫秒)。
它限制了等待填满 batch 大小的时间。
当 batchSize > 1 且收集批处理消息所用时间大于 batchReceiveTime 时,将立即发送批处理消息。
默认值为 0(无超时)。spring-doc.cadn.net.cn |
|
|
|
recoveryBackOff
(recovery-back-off)spring-doc.cadn.net.cn
|
指定 BackOff 表示在消费者因非致命原因启动失败时,重试启动消费者的时间间隔。默认值为 FixedBackOff,即每五秒无限次重试。与 recoveryInterval 相互排斥。spring-doc.cadn.net.cn |
|
|
|
recoveryInterval
(recovery-interval)spring-doc.cadn.net.cn
|
确定在消费者因非致命原因启动失败时,再次尝试启动消费者之间的时间间隔(单位:毫秒)。 默认值:5000。 与 recoveryBackOff 互斥。spring-doc.cadn.net.cn |
|
|
|
retryDeclarationInterval
(missing-queue-
retry-interval)spring-doc.cadn.net.cn
|
如果在消费者初始化期间,配置的队列子集可用,则消费者将从这些队列开始消费。消费者会尝试通过使用此间隔被动声明缺失的队列。当该间隔结束时,将再次使用“declarationRetries”和“failedDeclarationRetryInterval”。如果仍存在缺失的队列,消费者将再次等待此间隔后重试。该过程将持续无限进行,直到所有队列都可用。默认值:60000(一分钟)。spring-doc.cadn.net.cn |
|
|
|
shutdownTimeout
(N/A)spring-doc.cadn.net.cn
|
当容器关闭时(例如,如果其包含的 ApplicationContext 被关闭),它将等待正在进行的消息处理,直至达到此限制。默认值为五秒。spring-doc.cadn.net.cn |
|
|
|
startConsumerMinInterval
(min-start-interval)spring-doc.cadn.net.cn
|
必须经过的毫秒数,才能在按需启动每个新消费者。 参见 监听器并发性。 默认值:10000(10秒)。spring-doc.cadn.net.cn |
|
|
|
statefulRetryFatal 无消息ID (N/A)spring-doc.cadn.net.cn
|
在使用有状态重试建议时,如果接收到一条缺少 messageId 属性的消息,默认情况下该消息会被视为对消费者致命的(即消费者将被停止)。将此设置为 false 可以丢弃(或路由至死信队列)此类消息。spring-doc.cadn.net.cn |
|
|
|
stopConsumerMinInterval
(min-stop-interval)spring-doc.cadn.net.cn
|
检测到空闲消费者时,自上次停止消费者以来必须经过的毫秒数,才能停止当前消费者。spring-doc.cadn.net.cn |
|
|
|
streamConverter
(N/A)spring-doc.cadn.net.cn
|
A StreamMessageConverter 用于将原生流消息转换为 Spring AMQP 消息。spring-doc.cadn.net.cn |
|
|
|
taskExecutor
(task-executor)spring-doc.cadn.net.cn
|
对 Spring TaskExecutor(或标准 JDK 1.5+ Executor)的引用,用于执行监听器调用器。默认为 SimpleAsyncTaskExecutor,使用内部管理的线程。spring-doc.cadn.net.cn |
|
|
|
taskScheduler
(task-scheduler)spring-doc.cadn.net.cn
|
使用 DMLC 时,调度器曾用于在 'monitorInterval' 时间间隔运行监控任务。spring-doc.cadn.net.cn |
|
|
|
transactionManager
(transaction-manager)spring-doc.cadn.net.cn
|
监听器操作的外部事务管理器。 也与 channelTransacted 相辅相成——如果 Channel 是事务性的,其事务将与外部事务同步。spring-doc.cadn.net.cn |
|
|
|