gpt4 book ai didi

java - 将消息保留在队列中以防接收器崩溃

转载 作者:行者123 更新时间:2023-12-02 08:12:21 24 4
gpt4 key购买 nike

我们有一个 Spring JMS 消息监听器容器,用于异步接收消息。使用 DefaultMessageListenerContainer 并处于 sessionTransacted 模式。我知道处于 sessionTransacted 模式意味着如果出现异常,消息将被放回到队列中。但是,即使接收器(选择消息的接收器)崩溃或者只是运行它的机器断电,如何确保消息不会从队列中删除?

起初我以为 CLIENT_ACKNOWLEDGE 确认模式应该救我,但是 apparently事实并非如此,Spring 无论如何都会调用 .acknowledge() 。

所以我的问题是,如何保证交货?使用自定义 MessageListenerContainer?使用事务管理器?

最佳答案

使用事务处理 session 并通过调用 Session 类的 commit() 方法来指示成功的消息处理。

检查19.4.5. Processing messages within transactions部分用于配置。 (您可以使用DefaultMessageListenerContainer)。根据您对消息执行的操作,您可能需要 JTA 事务管理器。

关于java - 将消息保留在队列中以防接收器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com