【发布时间】:2015-06-30 04:43:20
【问题描述】:
当我在 onMessage 方法上收到一些消息并且在我完成消息处理之前,我的 JVM 进程被杀死时会发生什么?
在我的进程再次启动后,消息是否重新传递?
【问题讨论】:
当我在 onMessage 方法上收到一些消息并且在我完成消息处理之前,我的 JVM 进程被杀死时会发生什么?
在我的进程再次启动后,消息是否重新传递?
【问题讨论】:
这由 JMS 的确认部分专门控制。不同的 JMS 提供者和客户端行为不同。
消息消费者必须确认消息已被接收和处理。然后,JMS 队列将考虑使用该消息。
大多数提供程序都有一个 AUTO_ACKNOWLEDGE 设置,该设置将在 onMessage() 代码无错误执行后确认消息。
【讨论】:
这取决于你的 JMS 服务提供商,如果是 weblogic,它被写入物理文件,你可以再次重新推送。但它并不复杂。创建网桥时可以配置物理文件的位置。
过去我们也面临这个问题,然后我们切换到 KAFKA 。在 KAFKA 中的消息会在发布者端保留一段时间,因此如果出现任何崩溃或问题,您可以再次调用发布者。
【讨论】: