跳到主要内容

第二步:势度Saydo EDA基础

您已经完成了教程的第一部分:第一步:设置您的第一个事件代理


在第二步中,您将学习事件、消息和主题如何工作,以在您的事件驱动架构(EDA)中传播信息。理解事件、消息、交换模式、事件代理和主题之间的相互关系对于为您的组织建立响应灵敏的EDA至关重要。

在EDA中,事件表示状态的变化,例如传感器指示温度变化、数据库字段变化、船舶改变航向、银行存款完成或电子商务应用中点击结账按钮。当事件发生时,应用程序会发送一条消息。消息传递是促进参与者之间(即发布者和订阅者)消息交换的通道。因此,简单地说,事件作为消息在事件代理中流动,发布者在事件发生时向需要了解事件的订阅者发送消息。

消息具有简单的结构,由元数据和有效载荷组成。一条消息有三个部分:头部和属性包含消息的元数据。主体包括消息有效载荷,或消息传达的事件信息。

img

在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/ea1234flight/departed/ea1234

  • >

>字符用于订阅的最后一级,表示“一个或多个”通配符匹配。例如,flight/boarding/>不匹配主题flight/boarding,但它确实匹配flight/boarding/ea1234flight/boarding/ea321/yow/fra

要了解更多关于通配符规则及其在主题订阅中的使用,请参见主题订阅中的通配字符。

考虑这些咖啡店主题的订阅示例:

  • coffeeshop / order / new / v1 / mobile / ca / 3244/ * 订阅所有来自加拿大商店3244的移动应用的新咖啡店订单事件。

  • coffeeshop / order / * / v1 / mobile / ca / > 订阅所有来自加拿大任何商店的移动应用的新咖啡店订单事件。

  • coffeeshop / order / * / v1 / * / * / > 订阅所有来自任何来源的任何商店的任何国家的咖啡店订单事件。

  • coffeeshop / order / > 订阅所有咖啡店订单事件。

  • > 订阅流经您的事件代理的所有事件。

这些示例展示了如何使用订阅中的***** 和 > 通配符,使消费者能够使用简单但灵活的过滤来获得他们想要接收的确切事件。这种过滤允许消费者只处理感兴趣的事件,避免花费资源处理他们将丢弃的事件。

要了解更多信息,请观看我们的势度Saydo开发者倡导者如何介绍智能主题和通配符。

关于势度Saydo主题的全部信息!

立即尝试

现在是时候使用PubSub+ Broker Manager中的**Try Me!**工具来实际查看主题和订阅了。

软件事件代理

要为软件事件代理使用**Try Me!**工具,请执行以下步骤:

  1. 打开浏览器并导航到 http://<localhost>:8080

其中 <localhost> 是您的事件代理的IP地址或主机名。

  1. 使用您设置事件代理时设置的凭据登录。默认用户名和密码都是 admin
  2. 消息VPN列表中,点击 default
  3. 在左侧导航栏中,选择 Try Me!
  4. 软件事件代理有一个默认的消息客户端用户名(default),不需要密码即可连接。如果您没有更改任何用户名、密码或URL,您可以使用提供的默认值将发布者和订阅者连接到事件代理。

img

现在让我们发布和订阅消息。

要为事件代理服务使用Try Me!工具,请执行以下步骤:

  1. 在浏览器中,访问PubSub+ Cloud登录页面。

  2. 输入您注册时使用的电子邮件地址和密码,然后点击 Sign in

  3. 从导航栏中选择 Cluster Managerimg

  4. 选择您想要尝试的事件代理服务。

  5. 服务详情页面上,选择**Try Me!**标签。

  6. 您可以通过点击复制img来复制发布者和订阅者连接到事件代理服务所需的连接信息。

  7. 点击打开PubSub+ Broker Manager。

  8. 在Broker Manager中,在左侧导航栏中选择Try Me!

  9. 发布者面板中,在建立连接部分,点击展开图标 img

  10. 通过输入您在步骤6中找到的连接信息来连接到事件代理服务。

    1. 用户名的值粘贴到客户端用户名字段中。
    2. 密码的值粘贴到客户端密码字段中。
  11. 订阅者面板中,确保每个字段都选中与发布者相同

  12. 发布者面板下,点击连接。一旦建立连接,在订阅者面板中点击连接

发布和订阅消息

现在您已经在Broker Manager中设置了TryMe!工具,您可以通过执行以下步骤来订阅并接收发布的消息:

  1. 要配置发布者发布消息到主题,请执行以下步骤:

    1. 选择主题作为发布选项。

    2. 点击清除所有以删除主题构建器示例。

    3. 发布到主题字段中,输入:coffeeshop/order/new/v1/mobile/ca/437/44334

    4. 设置直接作为传递模式

    5. 将以下JSON内容复制到消息内容字段。

      {
      "source": "mobile",
      "device": "app-android",
      "country" : "Canada",
      "region" : "Ontario",
      "storeID" : 437,
      "requestId": 44334,
      "customer": {
      "name": "John Doe",
      "email": "john.doe@example.com",
      "phone": "123-456-7890"
      },
      "items": [
      {
      "productID": "COF001",
      "productName": "Americano",
      "quantity": 2,
      "size": "Medium",
      "options": ["Extra Shot", "Whipped Cream"]
      },
      {
      "productID": "PST001",
      "productName": "Chocolate Croissant",
      "quantity": 1
      }
      ],
      "totalPrice": 12.50,
      "pickupTime": "2024-01-05T14:30:00",
      "specialInstructions": "Please make it extra hot."
      }
  2. 要配置订阅者,在主题订阅者字段中,输入 coffeeshop/order/new/v1/*/ca/> 并点击 订阅

  3. 点击 发布。 事件由发布者发布并由订阅者接收。

您现在已经看到了如何使用带有通配符的订阅进行简单的发布-订阅操作。您可以尝试更改主题和订阅,看看订阅者接收和不接收什么。

教程步骤

您已经完成了教程的第二步。点击链接进入下一课。

步骤描述
img设置您的第一个事件代理 - 完成
img势度Saydo EDA基础 - 完成
img设置势度Saydo Try-Me CLI工具 - 下一课
img尝试发布-订阅消息交换模式
img尝试请求-响应消息交换模式
img探索消费者扩展模式
img下一步

您可以随时返回到主教程页面。