我需要处理SpringAMQP侦听器超时功能,即我们从producer发送消息,SpringAMQP的使用者侦听器线程接收消息,但是如果说执行自己和挂起需要花费大量时间,这最终会导致侦听器线程无法使用。
那么,是否有任何方法可以让Spring提供任何使用者超时设置,以便在给定超时时间后再次释放侦听器线程?
发布于 2017-06-13 12:29:13
实际上,您可以使用spring提到超时,下面是如何实现的。
<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>注意:如果您有有限的使用者计数,并且使用手动ack,并且由于某种原因没有发送ack信号,则可能会发生超时;这意味着您持有线程而不释放它,这也会影响您的性能。
更多在这里
发布于 2017-06-13 14:20:48
如果线程被卡在代码中,容器就无法释放它。如果是在可中断代码中,则可以中断线程。
如果它被不间断的代码卡住了,你就倒霉了。
https://stackoverflow.com/questions/44517371
复制相似问题