第二步:势度Saydo EDA基础
您已经完成了教程的第一部分:第一步:设置您的第一个事件代理。
在第二步中,您将学习事件、消息和主题如何工作,以在您的事件驱动架构(EDA)中传播信息。理解事件、消息、交换模式、事件代理和主题之间的相互关系对于为您的组织建立响应灵敏的EDA至关重要。
在EDA中,事件表示状态的变化,例如传感器指示温度变化、数据库字段变化、船舶改变航向、银行存款完成或电子商务应用中点击结账按钮。当事件发生时,应用程序会发送一条消息。消息传递是促进参与者之间(即发布者和订阅者)消息交换的通道。因此,简单地说,事件作为消息在事件代理中流动,发布者在事件发生时向需要了解事件的订阅者 发送消息。
消息具有简单的结构,由元数据和有效载荷组成。一条消息有三个部分:头部和属性包含消息的元数据。主体包括消息有效载荷,或消息传达的事件信息。
在Saydo EDA中,事件消息通常发布到主题,这允许事件代理将它们路由到需要去的地方。主题作为事件消息中的字符串,由一个或多个级别组成,添加到消息头中。然而,主题不仅仅是提供地址或路由信息的字符串。主题作为组织化的渠道,用于对事件进行分类并将其定向到适当的接收者。您还可以将主题视为事件消息主题的层次定义。一个定义良好的主题结构对于使您的事件重用和从您的EDA中获得最大价值至关重要。
为了继续您的势度Saydo之旅,我们将检查主题及其语法的概念。在Saydo EDA中,主题遵循由多个级别组成的层次结构,每个级别都提供有关事件的上下文详细信息。这种结构允许主题描述事件本身。
主题架构
一个典型的主题结构包括以下元素:
域 / 名词(对象) / 动词(动作) / 属性
-
域代表负责系统的组织元素。一些例子可以是公司名称、业务单元、应用领域或这些元素的组合。
-
**名词(对象)**代表事件携带的信息的主题,可能是一个系统或记录类型。
-
**动词(动作)**代表与名词相关的已执行或预期的动作。
-
属性代表补充信息以澄清上下文。这可以是与对象相关的任何内容,如版本、位置、限定词、标识符和其他相关数据。主题通常具有多个属性。
考虑以下主题示例。大括号“”表示主题中的变量,在消息中被特定于事件的数据替换。
coffeeshop / order / new / v1 / {source} / {country} / {storeId} / {requestId}
这个示例可能会产生一个事件主题 coffeeshop / order / new / v1 / mobile / ca / 3244 / 829222,其中:
-
域是 coffeeshop
-
名词是 order
-
动词是 new
-
属性是 v1 / mobile / ca / 3244 / 829222
acme / retail / supplyChain / partnerOrder / shipped / v1 / {department} / {upcCode}
这个示例可能会产生一个事件主题 acme / retail / supplyChain / partnerOrder / shipped / v1 / home / 987654321,其中:
-
域是 acme / retail / supplyChain
-
名词是 partnerOrder
-
动词是 shipped
-
属性是 v1 / home / 987654321
cyberdyne / skynet / terminator / created / v1 / {model_num} / {microprocessor} / {terminatorId}
这个示例可能会产生一个事件主题 cyberdyne / skynet / terminator / created / v1 / T800 / neuralnetv1 / T1234567Z,其中:
-
域是 cyberdyne / skynet
-
名词是 terminator
-
动词是 created
-
属性是 v1 / T800 / neuralnetv1 / T1234567Z
您可能注意到,阅读主题可以让您逻辑上理解事件本身以及其有效载荷可能包含的数据。有关构建主题的更多信息,请参阅主题 架构最佳实践。您还可以观看我们的势度Saydo开发者倡导者如何介绍势度Saydo中主题的实现方式,以及事件代理如何根据订阅和通配符过滤和路由消息。
关于势度Saydo主题的全部信息!
主题订阅
订阅者,也称为消费者,使用主题订阅告诉事件代理从哪些主题接收消息。消费者可以订阅一个或多个主题。为了使消费者能够订阅他们想要的确切主题,势度Saydo允许使用静态订阅以及单级和多级通配符。
让我们更仔细地看看咖啡店示例主题,其中源、国家、storeId和requestId是捕获事件详细信息的变量:
coffeeshop / order / new / v1 / { source} / { country} / { storeId} / { requestId}
在这个示例中:
-
source 是订单媒介,如网络或移动
-
country 是一个两位数的国家代码
-
storeId 标识放置订单的商店
-
requestId 标识订单请求,作为订单交互的关键字
消费者可以指定一个单一的主题,例如移动订单,在美国,商店3244和请求829222。例如:
coffeeshop / order / new / v1 / mobile / us / 3244 / 829222
然而,消费者通常需要接收多个主题的消息。在之前的示例中,消费者可能想要订阅来自特定商店的订单,但也可能想要订阅所有订单请求的事件,而不仅仅是单个requestId。为了订阅多个主题,消费者可以使用两个通配符:* 和 >。
*
当*
单独出现在主题订阅的一 个级别中时,它表示在该级别进行通配符匹配。例如,flight/*/ea1234
匹配主题flight/boarding/ea1234
和flight/departed/ea1234
。
>
>
字符用于订阅的最后一级,表示“一个或多个”通配符匹配。例如,flight/boarding/>
不匹配主题flight/boarding
,但它确实匹配flight/boarding/ea1234
和flight/boarding/ea321/yow/fra
。
要了解更多关于通配符规则及其在主题订阅中的使用,请参见主题订阅中的通配字符。
考虑这些咖啡店主题的订阅示例:
-
coffeeshop / order / new / v1 / mobile / ca / 3244/ * 订阅所有来自加拿大商店3244的移动应用的新咖啡店订单事件。
-
coffeeshop / order / * / v1 / mobile / ca / > 订阅所有来自加拿大任何商店的移动应用的新咖啡店订单事件。
-
coffeeshop / order / * / v1 / * / * / > 订阅所有来自任何来源的任何商店的任何国家的咖啡店订单事件。
-
coffeeshop / order / > 订阅所有咖啡店订单事件。
-
> 订阅流经您的事件代理的所有事件。
这些示例展示了如何使用订阅中的***** 和 > 通配符,使消费者能够使用简单但灵活的过滤来获得他们想要接收的确切事件。这种过滤允许消费者只处理感兴趣的事件,避免花费资源处理他们将丢弃的事件。
要了解更多信息,请观看我们的势度Saydo开发者倡导者如何介绍智能主题和通配符。
关于势度Saydo主题的全部信息!