Java 当JMS服务器未连接时,如何优雅地关闭Spring上下文启动?

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

我正在使用SpringJMS连接到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上下文启动?或者,更好的是,添加一个钩子,在返回BackOffExecutionSTOP时执行?

为什么不使用System.exit-1,而不是在DefaultMessageListenerContainer的stop方法中引发异常