Java 当JMS服务器未连接时,如何优雅地关闭Spring上下文启动?
我正在使用SpringJMS连接到ActiveMQ,但有时ActiveMQ服务器可能处于脱机状态。要使我的应用程序在达到某个超时后停止重试连接,我使用以下方法:Java 当JMS服务器未连接时,如何优雅地关闭Spring上下文启动?,java,spring,spring-jms,Java,Spring,Spring Jms,我正在使用SpringJMS连接到ActiveMQ,但有时ActiveMQ服务器可能处于脱机状态。要使我的应用程序在达到某个超时后停止重试连接,我使用以下方法: <jms:listener-container factory-id="jmsListenerContainerFactory" connection-factory="connectionFactory" back-off="jmsBackOff" /> <bean id="jmsB
<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上下文启动?或者,更好的是,添加一个钩子,在返回BackOffExecutionSTOP时执行?为什么不使用System.exit-1,而不是在DefaultMessageListenerContainer的stop方法中引发异常