Spring AMQP消息监听容器配置

本文详细介绍了SimpleMessageListenerContainer配置选项,包括事务管理、消息确认模式、错误处理等关键属性,帮助开发者更好地理解和配置消息监听容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息监听容器配置

    要配置SimpleMessageListenerContainer容器的事务,服务还有其他的一些交互,有很多的选项。
    下表中列出了容器属性的名称,以及使用命名空间<rabbit:message-listener-container/>中配置时的属性名称(在括号内)。在命名空间中,有些属性不存在,使用N/A标识。
属性描述
channelTransacted (channel-transacted)布尔型,用来描述是否在消息中使用事务
acknowledgeMode(acknowledge)NONE意味着没有任何的应答会被发送。RabbitMQ调用autoack,因为消息代理假定消费者不会针对应答采取任何操作。MANUAL以为着监听者必须通过调用Channel.basicAck()来告知所有的消息。AUTO意味着容器会自动应答,除非MessageListener抛出异常。注意如果设置了channelTransacted ,那么消息代理不仅要求应答还要求提交通知。这是默认方式。
transactionManager(transaction-manager)监听器进行操作的外部事务管理器。如果channelTransacted 设置了,Channel处在事务中,那么它的事务和外部事务进行了同步。
prefetchCount(prefetch)在一个套接字框架内,从代理接收消息的数目。这个值越大,发送消息就越快,但是导致非顺序处理的风险就越高。如果acknowledgeMode属性设置为NONE,这个属性将被忽略。为了匹配txSize,这个值有可能被增加。
shutdownTimeout(N/A)当容器被关闭的时候,它允许当时消息再被处理的时间。这个值的默认值是5秒。如果时间到了,Channel中的非事务消息将被丢弃。
txSize(transaction-size)当acknowledgeMode被设置为AUTO时,容器将处理txSize数目消息才开始应答。当事务Channel提交时,也是这种情况。prefetchCount的数目如果小于txSize,那么要增加它的数目。
receiveTimeout(receive-timeout)等待每一个消息的时间。如果acknowledgeMode属性设置为NONE,这个receiveTimeout属性将没有作用,容器只是不断的获取消息。如果是事务中的channel,并且txSize>1,它的作用很大,它将导致已经消费的消息直到过期时间才被应答。
autoStartup(auto-startup)指示容器是否随着ApplicationContext的启动而启动。设置这个值为false,如果在你启动的时候消息代理还没有启动,当消息代理准备好的时候调用start()方法手动启动。
phase(phase)当autoStartup被设置为true的时候,就有了生命周期长度,容器的启动和关闭在这个生命周期长度内。这个值越小,那么容器启动的时间越小,关闭的时间越池。它的默认值是Integer.MAX_VALUE,意味着容器尽量迟的启动,尽量早的关闭。
adviceChain(advice-chain)对监听执行进行一系列AOP增强。它可以被用来实施一些比较尖端的问题,例如当代理死掉的时候,进行原子化拒绝。注意,AMQP错误引发的重链由CachingConnectionFactory来完成,只要这个代理还在。
taskExecutor(task-executor)Spring TaskExecutor的引用来执行监听调用。默认情况是SimpleAsyncTaskExecutor,使用内部线程管理。
errorHandler(error-handler)一个错误处理策略的引用,来处理在监听器执行过程中的没有捕获到的异常。默认值是ConditionalRejectingErrorHandler。
concurrentConsumers(concurrency)在初始化监听器的时候,并发消费者的数目。
maxConcurrentConsumers(max-concurrency)并发消费者的最大数目。必须大于或者等于并发消费者的数目。
startConsumerMinInterval(min-start-interval)新消费者按需启动时,所需要的延时时间。
stopConsumerMinInterval(min-stop-interval)消费者停止所需要的延时时间。
consecutiveActiveTrigger(min-consecutive-active)在没有接收超时的情况发生,消费者连续接收到消息的数目,为创建新的消费者作参考。它受到txSize的影响。
consecutiveIdleTrigger(min-consecutive-idle)消费者必须经过的接收超时的数目,在停止消费者之前。它受到txSize的影响。
connectionFactory(connection-factory)connectionFactory引用,当使用命名空间配置时,默认值是:rabbitConnectionFactory。
defaultRequeueRejected(requeue-rejected)决定由于监听器抛出异常而拒绝的消息是否被重新放回队列。默认值为true。
recoveryInterval(recovery-interval)由于非致命错误而导致消费者启动失败,到下次启动时的时间间隔。
exclusive(exclusive)决定一个消费者对于队列是否拥有专属访问。如果这个值设置为true,容器的并发数目就必须是1。如果另外一个消费者进行了排他性访问,那么容器将试着恢复消费者,根据恢复时间间隔。当使用命名空间进行配置时,这个值配置在<rabbit:listener/>中。默认值为false。
rabbitAdmin(admin)当一个容器监听至少一个自动删除的队列时,在启动的时候发现丢失,容器将会使用RabbitAdmin声明队列,绑定和交换。如果在配置时使用的是条件声明,容器必须使用配置的admin来声明这些元素。只有自动删除的,并且是条件声明的队列需要admin。如果你希望在容器启动之前不希望自动删除的队列被删除,其可以设置admin的auto-startup属性为false。默认情况下RabbitAdmin声明的是分条件元素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值