你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用命名空间主题将事件传递到 Azure 事件中心 - Azure 门户

本文提供分步说明,介绍如何以 CloudEvents JSON 格式将事件发布到 Azure 事件网格,并使用推送传递模型来传递这些事件。

具体来说,你将使用 Azure 门户和 Curl 将事件发布到事件网格中的命名空间主题,并将这些事件从事件订阅推送到事件中心处理程序目标。 有关推送传递模型的详细信息,请参阅推送传递概述

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

创建事件网格命名空间

事件网格命名空间提供用户定义的终结点,事件将发布到该终结点。 以下示例在 Azure Cloud Shell 中使用 Bash 在资源组中创建一个命名空间。 命名空间名称必须唯一,因为它是域名系统 (DNS) 条目的一部分。

  1. 导航到 Azure 门户。

  2. 在主题的搜索栏中,键入 Event Grid Namespaces 并从结果中选择 Event Grid Namespaces

    显示 Azure 门户中搜索栏的屏幕截图。

  3. 在“事件网格命名空间”页面上的命令栏中,选择“+ 创建”。 显示“事件网格命名空间”页的屏幕截图,已选中命令栏上的“创建”按钮。

  4. 在“创建命名空间”页上执行以下步骤:

    1. 选择要在其中创建命名空间的 Azure 订阅
    2. 通过选择“新建”或选择现有资源组来创建新的资源组
    3. 输入命名空间的名称
    4. 选择要创建资源组的位置
    5. 然后,选择“审阅并创建”。
      显示“创建命名空间”页的屏幕截图。
    6. 在“查看 + 创建”页面上,选择“创建”。
  5. 成功部署后,在“部署”页面上选择“转到资源”

获取访问密钥

  1. 在“事件网格命名空间”页面上,选择左侧菜单中的“访问密钥”。
  2. 选择“访问密钥”旁边的复制按钮。 显示“事件网格命名空间”页的屏幕截图,已选择“访问密钥”选项卡。
  3. 将访问密钥保存到某个位置。 本快速入门后面会用到它。

为事件网格命名空间启用托管标识

在事件网格命名空间中启用系统分配的托管标识。 若要使用托管标识将事件传递到事件中心命名空间中的事件中心,请执行以下步骤:

  1. 启用系统分配的或用户分配的托管标识:命名空间。 继续阅读下一部分,了解如何使用 Azure CLI 启用托管标识。
  2. 将标识添加到事件中心命名空间上的 Azure 事件中心数据发送者角色,继续阅读下一部分,了解如何添加角色分配。
  3. 将使用事件中心的事件订阅配置为终结点,以使用系统分配或用户分配的托管标识。

在本部分中,将在命名空间上启用系统分配的托管标识。 本快速入门稍后将执行其他步骤。

  1. 在“事件网格命名空间”页面上,选择左侧菜单中的“标识”

  2. 在“标识”页面上,为“状态”选择“开”

  3. 在命令栏上选择“保存”。

    显示“事件网格命名空间”页的“标识”选项卡的屏幕截图。

在命名空间中创建主题

创建一个主题来保存发布到命名空间终结点的所有事件。

  1. 在左侧菜单中选择“主题”
  2. 在“主题”页面上,选择命令栏上的“+ 主题”显示“主题”页的屏幕截图。
  3. 在“创建主题”页上执行以下步骤:
    1. 输入主题名称。
    2. 选择创建
      显示“创建主题”页的屏幕截图。

创建事件中心命名空间

创建一个事件中心资源,该资源将用作命名空间主题推送发送订阅的处理程序目标。 在 Internet 浏览器的单独标签页中或在单独的窗口中执行这些步骤。 导航到 Azure 门户,使用之前使用的相同凭据和相同 Azure 订阅进行登录。

  1. 在搜索栏中键入“事件中心”,然后选择“事件中心”
  2. 在“事件中心”页面上,选择命令栏中的“+ 创建”
  3. 在“创建命名空间”页上执行以下步骤
    1. 选择用于创建事件网格命名空间的 Azure 订阅
    2. 选择之前使用的资源组
    3. 输入事件中心命名空间的名称
    4. 选择你曾为事件网格命名空间使用的相同位置
    5. 为“定价层”选择“基本”
    6. 选择“查看 + 创建”。 显示“创建事件中心命名空间”页的屏幕截图。
    7. 在“查看”页上,选择“创建” 。
  4. 部署成功后,在“部署”页面上选择“转到资源”

将事件网格托管标识添加到事件中心数据发送者角色

  1. 在“事件中心命名空间”页面上,从左侧菜单中选择“访问控制(IAM)”。
  2. 在命令栏上选择“添加”->“添加角色分配”显示“事件中心命名空间”页的屏幕截图,已选择“访问控制”选项卡。
  3. 在“添加角色分配”页面上,搜索“事件中心数据发送者”,然后从角色列表中选择“Azure 事件中心数据发送者”,然后选择“下一步”显示“添加角色分配”页的屏幕截图。
  4. 在“成员”选项卡中,选择类型“托管标识”,然后选择“+ 选择成员”显示“添加角色分配”页的“成员”选项卡的屏幕截图。
  5. 在“选择托管标识”页面上,为“托管标识”选择“事件网格命名空间”,然后选择与事件网格命名空间同名的托管标识显示“选择托管标识”页的屏幕截图。
  6. 在“选择托管标识”页面上,选择“选择”显示所选托管标识的屏幕截图。
  7. 然后,在“添加角色分配”页面,选择“查看 + 分配”显示“添加角色分配”页的屏幕截图,已选择托管标识。
  8. 在“查看 + 分配”页面上,选择“查看 + 分配”。

创建事件中心

  1. 在“事件中心命名空间”页面上,选择左侧菜单中的“事件中心”。
  2. 在“事件中心”页面上,选择命令栏中的“+ 事件中心”显示“事件中心”页的屏幕截图,已选择“+ 事件中心”。
  3. 在“创建事件中心”页面上,输入事件中心的名称,然后选择“查看 + 创建”显示“创建事件中心”页的屏幕截图。
  4. 在“查看 + 创建”页面上,选择“创建”。

创建事件订阅

创建事件订阅,将其发送模式设置为“推送”,以支持推送发送

  1. 在使“事件中心命名空间”页面保持打开的情况下,切换到打开了“事件网格命名空间”页面的标签页或窗口
  2. 在“事件网格命名空间”页面上,选择左侧菜单中的“主题”
  3. 在“主题”页面上,选择在上一步中创建的主题
  4. 在命令栏上选择“+ 订阅”显示“主题”页的屏幕截图,已选中“创建订阅”按钮。
  5. 在“创建事件订阅”页上执行以下步骤:
    1. 在“基本”选项卡中,输入事件订阅的名称
    2. 为事件发送模式选择“推送”
    3. 确认为“终结点类型”选择了“事件中心”
    4. 选择“配置终结点”显示“创建订阅”页的屏幕截图,已为“发送模式”选择“推送”。
    5. 在“选择事件中心”页面上,按照以下步骤操作:
      1. 选择具有事件中心的 Azure 订阅和资源组
      2. 选择相应的事件中心命名空间和事件中心
      3. 然后,选择“确认选择”。 显示“选择事件中心”页的屏幕截图。
    6. 返回“创建订阅”页面,为“托管标识类型”选择“系统分配”显示“创建订阅”页的屏幕截图,已将“托管标识”类型设为“系统分配”。
    7. 选择创建

将事件发送到主题

现在,按照本部分中的步骤将示例事件发送到命名空间主题。

  1. 在 Azure 门户中启动 Cloud Shell。 切换到“Bash”

    显示 Cloud Shell 的屏幕截图。

  2. 在 Cloud Shell 中运行以下命令,以声明一个变量来保存命名空间的访问密钥。 你在本快速入门的前面部分记录了该访问密钥。

    key=ACCESSKEY
    
  3. 声明一个用于保存发布操作 URI 的变量。 将 NAMESPACENAME 替换为事件网格命名空间的名称,并将 TOPICNAME 替换为主题的名称。

    publish_operation_uri=https://NAMESPACENAME.eastus-1.eventgrid.azure.net/topics/TOPICNAME:publish?api-version=2023-06-01-preview
    
  4. 创建一个符合 CloudEvents 规范的示例事件:

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    data 元素是事件的有效负载。 可以将任何格式正确的 JSON 置于此字段中。 若要详细了解可在事件中添加的属性(也称为上下文属性),请查看 CloudEvents 规范。

  5. 使用 CURL 向主题发送事件。 CURL 是发送 HTTP 请求的实用工具。

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

    在 Azure 门户中导航到“事件中心命名空间”页面,刷新该页面并验证图表中的传入消息计数器是否指示已收到事件。

    显示事件中心页面的屏幕截图,其中的图表显示已收到一个事件。

后续步骤

在本文中,你创建并配置了事件网格命名空间和事件中心资源。 有关从事件中心接收事件的分步说明,请参阅以下教程: