我需要处理SpringAMQP监听器超时功能,即我们从 生产环境 者发送消息,Spring AMQP的消费者监听器线程接收消息但说需要花费大量时间来执行自身并被绞死,这最终会导致监听器线程被渲染无法使用 .
那么有没有办法让我们有Spring AMQP提供的任何消费者超时设置,以便在给定的超时时间后再次释放侦听器线程
确实你可以使用spring-amqp提及超时,这里是如何 .
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory"> <property name="connectionTimeout" value="1000" /> <property name="concurrency" value="16" /> <!-- in milliseconds --> <property name="recoveryInterval" value="5000" /> </bean>
注意:如果您的消费者数量有限且使用手动确认并且由于某种原因没有发回确认信号,则可能会发生超时;这意味着你持有线程而不释放它也会影响你的表现 .
更多这里
doc
api
如果线程卡在您的代码中,则容器无法释放它 . 如果它是可中断的代码,你可以中断线程 .
如果它被卡在不间断的代码中,那你就不走运了 .
2 回答
确实你可以使用spring-amqp提及超时,这里是如何 .
注意:如果您的消费者数量有限且使用手动确认并且由于某种原因没有发回确认信号,则可能会发生超时;这意味着你持有线程而不释放它也会影响你的表现 .
更多这里
doc
api
如果线程卡在您的代码中,则容器无法释放它 . 如果它是可中断的代码,你可以中断线程 .
如果它被卡在不间断的代码中,那你就不走运了 .