理解直接消息传递与保证消息传递

学习目标

  • 解释事件驱动架构的关键组件与模式。

  • 区分直接消息传递与保证消息投递。

现代事件代理支持直接消息传递与保证消息传递。

消息传递主要有两种方式:直接消息传递(Direct Messaging)与保证消息投递(Guaranteed Message Delivery)。

直接消息传递面向这样的应用:需要处理高消息速率并要求低延迟,同时能够容忍偶发的消息丢失。在该模式中,客户端直接订阅主题。如果连接丢失,消息不会被存储,这意味着它们可能被丢弃。此外,也不存在投递确认机制。

另一方面,保证消息投递面向需要消息永久存储与可靠投递的应用。在该方式中,主题订阅绑定到特定端点。消息一旦被确认,就不会丢失。消息会一直保留直到被消费,并且投递会被显式确认。

持久性与耐用性

持久性(Persistence)针对消息,耐用性(Durability)针对端点。

  • 持久性:

  • 如果消息存储在非易失性内存中,则消息是持久的。

  • 当采用“Persistent Delivery Mode = Persistent”存储,或订阅持久端点时,即完成存储。

  • 持久消息会被确认。

  • 耐用性:

  • 持久端点独立于消费者运行。

  • 即使代理发生故障,队列消息也会保留。

  • 临时队列不是持久的,消费者注销后消息会被删除。

延伸阅读

  • 事件驱动架构模式 :概述各种事件驱动架构(EDA)模式、其用例以及实现事件驱动系统的最佳实践。

  • 直接消息 :说明 SAP Advanced Event Mesh 中的直接消息传递,包括消息如何在不持久化的情况下发送、路由和接收。

  • 保证消息 :关于保证消息传递的详细文档,确保 SAP Advanced Event Mesh 中的消息持久性、可靠性与投递确认。

本课其余配图

U5_Direct_Guaranteed_Messaging

U5_Persistence_Durability