JMS 客户端的 JVM 崩溃 - CLIENT ACKNOWLEDGE 模式
JMS client's JVM crushed - CLIENT ACKNOWLEDGE mode
假设 JMS 消息到达 JMS 客户端接收器中的 onMessage 方法。 Broker (IBM MQ) 在其他 JVM 上。就在这之后 - JMS 客户端的 JVM 崩溃了(在确认之前)。
我正在使用 CLIENT ACKNOWLEDGE。未成交。
当客户端崩溃时,代理会得到异常(什么异常?)吗?
消息会留在队列中吗?
是否会重新传送消息并 when/how ?
首先,IBM MQ 不在 JVM 中 运行。 IBM MQ 队列管理器 run-time 包含一组协调的进程。
队列管理器进程确实识别客户端应用程序的终止并进行清理。
当使用 CLIENT_ACKNOWLEDGE 模式时,IBM MQ JMS 客户端从 SYNC_POINT 下的队列中检索消息,因此消息在被应用程序确认之前不会从队列中删除.当应用程序恢复时,消息将是 re-delivered,即调用 connection.start() 方法。但是,如果消息的撤消计数超过撤消阈值 (BOTHRESH),则不会将消息重新传送到应用程序。在那种情况下,如果定义了消息,消息将被移至回退队列 (BOQNAME)。如果由于某种原因消息无法移至撤销队列,则消息将移至队列管理器上定义的死信队列 (DLQ)。
假设 JMS 消息到达 JMS 客户端接收器中的 onMessage 方法。 Broker (IBM MQ) 在其他 JVM 上。就在这之后 - JMS 客户端的 JVM 崩溃了(在确认之前)。
我正在使用 CLIENT ACKNOWLEDGE。未成交。
当客户端崩溃时,代理会得到异常(什么异常?)吗? 消息会留在队列中吗? 是否会重新传送消息并 when/how ?
首先,IBM MQ 不在 JVM 中 运行。 IBM MQ 队列管理器 run-time 包含一组协调的进程。
队列管理器进程确实识别客户端应用程序的终止并进行清理。
当使用 CLIENT_ACKNOWLEDGE 模式时,IBM MQ JMS 客户端从 SYNC_POINT 下的队列中检索消息,因此消息在被应用程序确认之前不会从队列中删除.当应用程序恢复时,消息将是 re-delivered,即调用 connection.start() 方法。但是,如果消息的撤消计数超过撤消阈值 (BOTHRESH),则不会将消息重新传送到应用程序。在那种情况下,如果定义了消息,消息将被移至回退队列 (BOQNAME)。如果由于某种原因消息无法移至撤销队列,则消息将移至队列管理器上定义的死信队列 (DLQ)。