停止Spring独立服务

时间:2015-08-13 13:15:36

标签: spring spring-integration spring-jdbc

我在项目中使用Spring Integration。

我们要求如果数据库出现故障,我们将停止Spring独立服务。

在Message监听器中,当我将数据持久存储到数据库中时,我检查是否得到了CannotGetJdbcConnectionException,然后使用applicationContext.close()方法停止Spring服务。

问题在于,如果我收到了关于队列的任何消息,并且数据库出现故障。

我尝试关闭Spring服务,然后除了保存该消息的DefaultMessageListenerContainer之外,所有资源都会关闭。

如果我手动终止该过程,则消息将进入正确的入站队列。

有什么方法可以强行停止Spring服务并将消息放回入站队列?

我希望我明白这一点。

由于 萨钦

1 个答案:

答案 0 :(得分:0)

在使用命名空间定义端点时,您应该使用setSessionTransacted(true)acknowledge="transacted")配置DMLC。

然后,任何正在进行的消息都将回滚到队列中。