【发布时间】:2015-11-12 02:08:10
【问题描述】:
我正在使用 Spring JMS 连接 ActiveMQ,但有时 ActiveMQ 服务器可能处于脱机状态。为了让我的应用程序在达到某个超时后停止重试连接,我正在使用以下内容:
<jms:listener-container factory-id="jmsListenerContainerFactory"
connection-factory="connectionFactory"
back-off="jmsBackOff" />
<bean id="jmsBackOff" class="org.springframework.util.backoff.ExponentialBackOff">
<property name="maxElapsedTime" value="600000"/>
</bean>
但问题是我希望应用程序在达到此超时时终止,从而中断 Spring 上下文启动过程。
我尝试创建自己的 DefaultMessageListenerContainer 并覆盖其 stop() 方法以引发异常,但这只会杀死它自己的线程,从而停止上下文启动而不是关闭它。
此时有什么方法可以优雅地关闭 Spring 上下文启动?或者,更好的是,添加一个在返回BackOffExecution#STOP 时执行的钩子?
【问题讨论】:
标签: java spring spring-jms