作为对上述内容的总结,本节介绍如何使用 Message Queue 服务从生成方向使用方传送消息。为了描绘一个完整的画面,我们需要补充另外一个细节:在传送过程中,系统处理的消息分为以下两类:
消息传送在图 2–7 中进行了说明。
以持久、可靠的方式传送消息的步骤如下:
1. 客户端运行时环境通过连接将消息从消息生成方传送到代理。
2. 代理从连接中读取消息并将此消息放入相应的目的地中。
3. 代理将(持久性)消息放入数据存储库中。
4. 代理向消息生成方的客户端运行时环境确认已收到消息。
5. 代理确定消息的路由。
6. 代理将消息从目的地写入适当的连接,并使用使用方的唯一标识符标记该消息。
7. 消息使用方的客户端运行时环境将消息从连接传送到消息使用方。
8. 消息使用方的客户端运行时环境向代理确认消息已使用。
9. 代理处理客户端确认,并在收到所有确认后删除(持久性)消息。
10. 代理向使用方的客户端运行时环境确认,告知客户端确认已得到处理。
如果管理员删除目的地中的消息,或者管理员删除或重新定义长期订阅,导致主题目的地中的消息未被传送即被删除,则代理可以在消息被使用前将它丢弃。在其他情况下,您可能希望代理将消息存储在称为停用消息队列的特殊目的地中,而不是将它们丢弃。在以下情况,消息会被放入停用消息队列中:消息过期时、消息因内存限制而被删除时,以及因客户端引发异常而导致传送失败时。通过将消息存储在停用消息队列中,您可以解决系统问题并在某些情况下恢复消息。