我使用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
时添加要执行的挂钩?
答案 0 :(得分:0)
为什么不直接使用System.exit(-1)
而不是在DefaultMessageListenerContainer的stop方法中抛出异常?