【问题标题】:How to gracefully shutdown Spring context startup when JMS server does not connect?JMS服务器未连接时如何优雅地关闭Spring上下文启动?
【发布时间】: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


    【解决方案1】:

    为什么不直接使用System.exit(-1) 而不是在 DefaultMessageListenerContainer 的 stop 方法中抛出异常?

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2011-12-12
      • 1970-01-01
      • 2010-09-06
      • 2015-06-25
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      相关资源
      最近更新 更多