zeebe入门课程17-工作流生命周期4 Message Correlation

版权声明:本文为博主原创文章,未经博主允许不得转载。不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群523988350,可以相互交流 https://blog.csdn.net/qq_30739519/article/details/89576245

消息关联描述消息如何与工作流实例(即与消息捕获事件)关联。在Zeebe中,消息不会直接发送到工作流实例。相反,它是用相关信息发布的。当工作流实例在指定相同关联信息的消息捕获事件处等待时,则消息与工作流实例关联。相关信息包含消息的名称和相关键。

例如:

将创建订单工作流的实例,并在消息捕获事件处等待,直到收集到资金。message catch事件指定收集的消息名称money和相关键orderid。该键通过工作流实例变量orderid解析为order-123。

支付服务使用Zeebe客户之一发布消息。它有收款名称和相关键order-123。由于相关信息匹配,因此消息与工作流实例相关联。这意味着它的有效负载被合并到工作流实例有效负载中,并留下消息捕获事件。

请注意,如果消息共享相同的关联信息,则可以将其关联到多个工作流实例。但每个工作流实例只能关联一次。

Message Buffering

在Zeebe中,消息可以在给定的时间内进行缓冲。在不能保证在消息发布之前输入消息捕获事件的情况下,缓冲可能很有用。

消息具有生存时间(TTL),它指定缓冲时间。在这段时间内,消息可以关联到工作流实例。

当工作流实例进入消息捕获事件时,它会轮询缓冲区以获得正确的消息。如果存在正确的消息,则它与工作流实例相关联。如果多条消息与相关信息匹配,那么第一条已发布的消息就是相关的。缓冲区的行为类似于队列。

当消息的TTL设置为零时,消息的缓冲将被禁用。如果消息无法与工作流实例关联,则将丢弃该消息。

Message Uniqueness

消息可以包含唯一的ID,以确保它只发布一次(即等幂)。ID可以是任何字符串,例如请求ID、跟踪号或消息队列中的偏移量/位置。

发布消息后,它将检查缓冲区中是否存在同名、相关键和ID的消息。如果是,则消息将被拒绝且不相关。

注意,唯一性检查只检查缓冲区。如果从缓冲区中丢弃了一条消息,那么随后可以发布具有相同名称、相关键和ID的消息。

zeebe qq交流群群号:856546010

猜你喜欢

转载自blog.csdn.net/qq_30739519/article/details/89576245