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

教程:使用命名空间主题将 MQTT 消息路由到 Azure 事件中心(Azure 门户)

在本教程中,你将了解如何使用命名空间主题将数据从 MQTT 客户端路由到 Azure 事件中心。 下面是概要步骤:

先决条件

  • 如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户
  • 如果你不熟悉事件网格,请在开始本教程之前阅读事件网格概述
  • 根据注册事件网格资源提供程序中的步骤注册事件网格资源提供程序。
  • 确保已在防火墙中打开端口 8883。 本教程中的示例使用 MQTT 协议,该协议通过端口 8883 进行通信。 在某些公司和教育网络环境中,此端口可能被阻止。

在 Azure 门户中创建命名空间

Azure 事件网格中的命名空间是一个或多个主题、客户端、客户端组、主题空间和权限绑定的逻辑容器。 它提供唯一的命名空间,让你可以在同一 Azure 区域中使用多个资源。 使用 Azure 事件网格命名空间,现在可以将相关资源分组到一起,并将其作为 Azure 订阅中的单个单元进行管理。

请按照后续部分所述创建、查看和管理 Azure 事件网格命名空间。

创建命名空间:

  1. 登录到 Azure 门户

  2. 在“搜索框”中,输入“事件网格命名空间”,然后在结果中选择“事件网格命名空间”

    屏幕截图显示搜索结果中的事件网格命名空间。

  3. 在“事件网格命名空间”页上的工具栏中选择“+ 创建”

    屏幕截图显示“事件网格命名空间”页,其中选择了工具栏上的“创建”按钮。

  4. 在“基本信息”页上执行以下步骤

    1. 选择要在其中创建命名空间的 Azure 订阅

    2. 选择现有的资源组,或创建资源组。

    3. 输入命名空间的名称

    4. 选择要在其中创建命名空间的区域或位置

    5. 在页面底部选择“查看 + 创建”。

      屏幕截图显示“创建命名空间”页的“基本信息”选项卡。

  5. 在“查看 + 创建”选项卡上,查看设置并选择“创建”。

  6. 在“部署已成功”页面上选择“转到资源”,以导航到你的命名空间

创建命名空间主题

  1. 如果没有在“事件网格命名空间”页面上,请按照创建、查看和管理命名空间步骤查看要用于创建主题的命名空间。

  2. 在“事件网格命名空间”页面上,选择左侧菜单中“事件代理”部分中的“主题”选项。

  3. 在“主题”页面上,选择命令栏上的“+ 主题”按钮。

    显示如何创建事件网格命名空间主题的屏幕截图。

  4. 在“创建主题”页面中,键入要创建的主题的名称,然后选择“创建”。

    显示事件网格命名空间主题创建页上的基本信息选项卡的屏幕截图。

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

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

  2. 开启此开关以启用系统分配的托管标识。

  3. 在工具栏上选择“保存”,保存该设置。

    屏幕截图显示事件网格命名空间的系统分配标识页。

  4. 在确认消息中选择

  5. 确认显示了系统分配的托管标识的对象 ID,以及用于分配角色的链接。

    屏幕截图显示已完成向命名空间分配标识。

    检查门户中的通知,确认是否为命名空间启用了托管标识。

为事件网格命名空间启用 MQTT 代理

  1. 在“事件网格命名空间”页面中,在左侧菜单上的“设置”下选择“配置”。

  2. 选中“启用 MQTT 代理”旁边的复选框。

  3. 在页面底部,选择“应用”

    显示用于启用 MQTT 的事件网格命名空间配置页的屏幕截图。

    检查门户中的通知,确认是否为命名空间启用了 MQTT 代理。

在 Web 浏览器的一个单独选项卡或单独窗口中,使用 Azure 门户创建具有事件中心的事件中心命名空间。

创建事件中心命名空间

事件中心命名空间提供唯一的范围容器,可以在该容器中创建一个或多个事件中心。 若要使用门户在资源组中创建命名空间,请执行以下操作:

  1. 在 Azure 门户的左侧菜单中选择“所有服务”,然后在“分析”类别中的“事件中心”旁边选择星号 (*) 确认“事件中心”已添加到左侧导航菜单中的“收藏夹”。

    屏幕截图显示在“所有服务”页中选择了“事件中心”。

  2. 选择左侧导航菜单中“收藏夹”下的“事件中心”,然后选择工具栏上的“创建”。

    屏幕截图显示在“事件中心”页上选择了“创建”按钮。

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

    1. 选择要在其中创建命名空间的订阅

    2. 选择在上一步创建的 资源组。

    3. 输入命名空间的名称。 系统会立即检查该名称是否可用。

    4. 选择命名空间所在的位置

    5. 选择“基本”作为“定价层”。 如果计划使用 Apache Kafka 应用中的命名空间,请使用标准层。 基本层不支持 Apache Kafka 工作负载。 若要了解各层之间的差异,请参阅以下文章:配额和限制事件中心高级版事件中心专用层

    6. 按原样保留“吞吐量单位”(适用于标准层)或“处理单位”(适用于高级层)设置。 若要了解吞吐量单位或处理单位,请参阅:事件中心的可伸缩性

    7. 在页面底部选择“查看 + 创建” 。

      Microsoft Azure 门户中的“创建命名空间”页的屏幕截图。

    8. 在“查看 + 创建”页上查看设置,然后选择“创建”。 等待部署完成。

  4. 在“部署” 页上选择“转到资源” ,以便导航到你的命名空间所对应的页面。

    屏幕截图显示“部署完成”页,其中包含资源链接。

  5. 确认显示的“事件中心命名空间” 页与以下示例类似:

    屏幕截图显示 Azure 门户中的事件中心命名空间的主页。

创建事件中心

若要在该命名空间中创建事件中心,请执行以下操作:

  1. 在“概述”页上,选择命令栏上的“+ 事件中心”。

    屏幕截图显示在命令栏上选择了“添加事件中心”按钮。

  2. 为事件中心键入名称,然后选择“查看 + 创建”。

    “创建事件中心”页的屏幕截图。

  3. 在“查看 + 创建”页面上,选择“创建”。

  4. 可以在警报中检查事件中心的创建状态。 创建事件中心后,事件中心列表中会显示该事件中心。

    屏幕截图显示事件中心列表。

为事件网格命名空间提供将事件发送到事件中心的访问权限

  1. 在“事件中心命名空间”页面上,从左侧菜单中选择“访问控制(IAM)”。

  2. 在“访问控制”页上,在命令栏中选择“+ 添加”,然后选择“添加角色分配”。

    屏幕截图显示事件中心命名空间的“访问控制”页。

  3. 在“添加角色分配”页面上,从角色列表中选择“Azure 事件中心数据发送者”,然后在页面底部选择“下一步”。

    屏幕截图显示“添加角色分配”页,其中选择了“Azure 事件中心数据发送方”。

  4. 在“成员”页上,执行以下步骤:

    1. 对于“将访问权限分配给”字段,选择“托管标识”。

    2. 选择“+ 选择成员”

      屏幕截图显示“添加角色分配”页,其中已选择“托管标识”。

  5. 在“选择托管标识”页上,执行以下步骤:

    1. 选择 Azure 订阅

    2. 对于“托管标识”,选择“事件网格命名空间”。

    3. 选择与事件网格命名空间同名的托管标识。

    4. 在页面底部选择“选择”。

      屏幕截图显示“选择托管标识”页,其中选择了“事件网格命名空间的托管标识”。

  6. 在“添加角色分配”页面中,在页面底部选择“查看 + 分配”。

  7. 在“查看 + 分配”页面上,选择“查看 + 分配”。

创建包含事件中心的事件订阅作为终结点

  1. 切换到 Web 浏览器窗口的选项卡,其中打开了事件网格命名空间。

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

  3. 在“主题”页面上,选择你之前创建的命名空间主题。

    屏幕截图显示“主题”页,其中选择了“命名空间主题”。

  4. 在“事件网格命名空间主题”页上,在顶部的命令栏中选择“+ 订阅”。

    屏幕截图显示“订阅”页。

  5. 在“创建订阅”页上,执行以下步骤:

    1. 输入事件订阅的名称。

    2. 对于“交付模式”,选择“推送”。

    3. 确认“终结点类型”设置为“事件中心”。

    4. 选择“配置终结点”

      屏幕截图显示“创建订阅”页。

    5. 在“选择事件中心”页面上,按照以下步骤操作:

      1. 选择包含事件中心的 Azure 订阅。

      2. 选择包含事件中心的资源组。

      3. 选择“事件中心命名空间”。

      4. 选择事件中心命名空间中的事件中心。

      5. 然后,选择“确认选择”。

        显示“选择事件中心”页的屏幕截图。

    6. 返回“创建订阅”页面,为“托管标识类型”选择“系统分配”

    7. 在页面底部选择“创建” 。

      屏幕截图显示“创建订阅”页,其中选择了“创建”按钮。

在事件网格命名空间中配置路由

  1. 通过在“事件网格命名空间主题”页的“Essentials”部分中选择命名空间,或通过在顶部的痕迹导航菜单中选择命名空间名称,导航回到“事件网格命名空间”页。

  2. 在“事件网格命名空间”页面上,在左侧菜单中的“MQTT 代理”部分中选择“路由”。

  3. 在“路由”页上,选择“启用路由”。

  4. 对于“主题类型”,选择“命名空间主题”。

  5. 对于“主题”,选择你创建的事件网格命名空间主题,所有 MQTT 消息都将路由到其中。

  6. 选择“应用”。

    屏幕截图显示“路由”页,其中选择了“命名空间主题”。

    检查通知以确认是否已为命名空间启用路由信息。

创建客户端、主题空间和权限绑定

按照快速入门:发布和订阅 MQTT 主题中的步骤进行操作:

  1. 创建客户端。 如果需要,可以创建第二个客户端,但这是可选的。

  2. 创建主题空间。

  3. 创建发布者和订阅者权限绑定。

  4. 使用 MQTTX 发送一些消息。

  5. 在你的事件中心命名空间的“概述”页面上验证事件中心是否已收到这些消息。

    屏幕截图显示事件中心的“概述”页,其中包含传入消息计数。

使用流分析查询在事件中心查看路由的 MQTT 消息

在 Azure 门户中,导航到事件订阅中的事件中心实例(事件中心)。 使用流分析处理事件中心中的数据。 有关详细信息,请参阅使用流分析处理 Azure 事件中心中的数据 - Azure 事件中心 | Microsoft Learn。 你可以在查询中看到 MQTT 消息。

屏幕截图显示使用流分析查询工具查看事件中心内的 MQTT 消息数据。

后续步骤

有关代码示例,请转到此 GitHub 存储库