我在项目中使用Spring Integration。
我们要求如果数据库出现故障,我们将停止Spring独立服务。
在Message监听器中,当我将数据持久存储到数据库中时,我检查是否得到了CannotGetJdbcConnectionException,然后使用applicationContext.close()方法停止Spring服务。
问题在于,如果我收到了关于队列的任何消息,并且数据库出现故障。
我尝试关闭Spring服务,然后除了保存该消息的DefaultMessageListenerContainer之外,所有资源都会关闭。
如果我手动终止该过程,则消息将进入正确的入站队列。
有什么方法可以强行停止Spring服务并将消息放回入站队列?
我希望我明白这一点。
由于 萨钦
答案 0 :(得分:0)
在使用命名空间定义端点时,您应该使用setSessionTransacted(true)
(acknowledge="transacted"
)配置DMLC。
然后,任何正在进行的消息都将回滚到队列中。