Sun Java System Message Queue 3.7 UR1 技术概述

消息在系统中的传送路线

作为对上述内容的总结,本节介绍如何使用 Message Queue 服务从生成方向使用方传送消息。为了描绘一个完整的画面,我们需要补充另外一个细节:在传送过程中,系统处理的消息分为以下两类:

消息传送在图 2–7 中进行了说明。

图 2–7 消息传送步骤

持久、可靠传送的消息的传送过程的图表显示步骤。该图用文本进行说明。

以持久、可靠的方式传送消息的步骤如下:

消息生成

1. 客户端运行时环境通过连接将消息从消息生成方传送到代理。

消息处理和路由

2. 代理从连接中读取消息并将此消息放入相应的目的地中。

3. 代理将(持久性)消息放入数据存储库中。

4. 代理向消息生成方的客户端运行时环境确认已收到消息。

5. 代理确定消息的路由。

6. 代理将消息从目的地写入适当的连接,并使用使用方的唯一标识符标记该消息。

消息使用

7. 消息使用方的客户端运行时环境将消息从连接传送到消息使用方。

8. 消息使用方的客户端运行时环境向代理确认消息已使用。

消息生命周期结束

9. 代理处理客户端确认,并在收到所有确认后删除(持久性)消息。

10. 代理向使用方的客户端运行时环境确认,告知客户端确认已得到处理。

如果管理员删除目的地中的消息,或者管理员删除或重新定义长期订阅,导致主题目的地中的消息未被传送即被删除,则代理可以在消息被使用前将它丢弃。在其他情况下,您可能希望代理将消息存储在称为停用消息队列的特殊目的地中,而不是将它们丢弃。在以下情况,消息会被放入停用消息队列中:消息过期时、消息因内存限制而被删除时,以及因客户端引发异常而导致传送失败时。通过将消息存储在停用消息队列中,您可以解决系统问题并在某些情况下恢复消息。