Spring AMQP 侦听器超时
Spring AMQP Listener Timeout
我有处理 SpringAMQP 侦听器超时功能的要求,即我们从生产者发送消息,Spring AMQP 的消费者侦听器线程接收消息但说需要很多时间来执行本身并被挂起,这最终将导致 Listener 线程变得不可用。
那么我们有什么方法可以让 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>
注意:如果您的消费者数量有限并且使用手动确认并且由于某种原因没有发送回确认信号,则可能会发生超时;这意味着你持有线程而不是释放它,这也会影响你的性能。
这里有更多内容
如果线程卡在您的代码中,容器将无法释放它。如果它在可中断代码中,您可以中断线程。
如果卡在不间断代码中,那你就倒霉了。
我有处理 SpringAMQP 侦听器超时功能的要求,即我们从生产者发送消息,Spring AMQP 的消费者侦听器线程接收消息但说需要很多时间来执行本身并被挂起,这最终将导致 Listener 线程变得不可用。
那么我们有什么方法可以让 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>
注意:如果您的消费者数量有限并且使用手动确认并且由于某种原因没有发送回确认信号,则可能会发生超时;这意味着你持有线程而不是释放它,这也会影响你的性能。
这里有更多内容
如果线程卡在您的代码中,容器将无法释放它。如果它在可中断代码中,您可以中断线程。
如果卡在不间断代码中,那你就倒霉了。