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

教程:使用 Azure 逻辑应用响应通过 Azure 事件网格收到的 Azure 服务总线事件

本教程介绍如何使用 Azure 逻辑应用响应使用 Azure 事件网格接收的 Azure 服务总线事件。

先决条件

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

创建服务总线命名空间

按照本教程中的说明操作:快速入门:使用 Azure 门户创建服务总线主题和主题订阅,以执行以下任务:

  • 创建一个高级服务总线命名空间。
  • 获取连接字符串。
  • 创建服务总线主题。
  • 创建主题的订阅。 本教程只需要一个订阅,因此无需创建订阅 S2 和 S3。

向服务总线主题发送消息

在本部分中,将使用示例应用程序将消息发送到在上一部分创建的服务总线主题。

  1. 克隆 GitHub azure-service-bus 存储库,或者下载 zip 文件并从中提取文件。

  2. 在 Visual Studio 中转到 \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 文件夹,然后打开 SBEventGridIntegration.sln 文件

  3. “解决方案资源管理器” 窗口中,展开 MessageSender 项目,然后选择 Program.cs

  4. <SERVICE BUS NAMESPACE - CONNECTION STRING> 替换为服务总线命名空间的连接字符串,并将 <TOPIC NAME> 替换为主题的名称。

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. 生成并运行程序以将五条测试消息(const int numberOfMessages = 5;)发送到服务总线主题。

    屏幕截图显示控制台应用输出,发送 5 条消息。

使用逻辑应用接收消息

在本部分中,创建一个 Azure 逻辑应用,该应用使用 Azure 事件网格接收服务总线事件。

  1. 依次选择“+ 创建资源”、“集成”、“逻辑应用”。

    显示“创建资源 > 集成 > 逻辑应用”菜单的屏幕截图。

  2. 在“创建逻辑应用”页上,执行以下步骤:

    1. 选择“消耗”“多租户”选项,然后选中“选择”。>

    2. 选择 Azure 订阅

    3. 输入 资源组。 选择用于其他资源的资源组,例如之前创建的服务总线命名空间。

    4. 输入逻辑应用的名称。

    5. 为逻辑应用选择“区域”

    6. 选择 审阅 + 创建

      显示“创建逻辑应用”页面的屏幕截图。

    7. 在“查看 + 创建”页面中,选择“创建”,以创建逻辑应用

  3. 在“部署完成”页中,选择“转到资源”来导航到“逻辑应用”页。

添加步骤以通过事件网格从服务总线接收消息

  1. 展开 开发工具 并选择 “逻辑应用模板”。

    显示逻辑应用设计器页的屏幕截图,其中选择了“空白”工作流选项。

  2. 选择 “空白”工作流逻辑应用设计器随即打开。

  3. 在设计器中执行以下步骤:

    1. 选择 “添加触发器 ”,然后搜索 事件网格

    2. 选择发生 资源事件的时间

      显示“逻辑应用设计器”的屏幕截图,其中选择了“事件网格”触发器。

  4. 选择“登录”

    显示“逻辑应用设计器”的屏幕截图,其中选择了“登录”按钮。

  5. 在“登录到帐户”页上,选择要用于登录到 Azure 的帐户。

  6. 在“当资源事件发生时”页上执行以下步骤:

    1. 对于“资源类型”,请选择“Microsoft.ServiceBus.Namespaces”。

    2. 选择 Azure 订阅。

    3. 对于“资源名称”,请选择你的服务总线命名空间。

    4. “高级参数”下,选择向下箭头。

    5. 选择“后缀筛选器”,然后将焦点移出下拉列表。

      显示添加“后缀筛选器”类型的新参数的屏幕截图。

    6. 对于“后缀筛选器”,请输入服务总线主题订阅的名称

      显示“逻辑应用设计器”的屏幕截图,其中显示了“服务总线”命名空间的连接配置。

  7. 选择该 + 符号,然后选择 添加操作

    1. 搜索“服务总线”。

      显示选择“服务总线”的屏幕截图。

    2. 选择“查看更多”,然后选择“从主题订阅获取消息”(速览锁定)。

      显示“逻辑应用设计器”的屏幕截图,其中选择了“从主题订阅获取消息”。

    3. 执行以下步骤:

      1. 输入连接的名称。 例如“从主题订阅获取消息”。

      2. 确认“身份验证类型”设置为“访问密钥”。

      3. 对于“连接字符串”,请将连接字符串复制并粘贴到之前保存的服务总线命名空间。

      4. 选择“新建”。

        显示“逻辑应用设计器”的屏幕截图,其中指定了服务总线连接字符串。

    4. 选择主题和订阅。

      显示“逻辑应用设计器”的屏幕截图,其中指定了服务总线主题和订阅。

添加步骤以处理和完成收到的消息

在本部分中,将添加步骤以在电子邮件中发送收到的邮件,然后完成该邮件。 在真实场景中,你会先在逻辑应用中处理消息,然后再完成该消息。

添加 For each 循环

  1. 选择 + 符号,然后选择 添加操作

  2. 搜索并选择“For each”。

    显示已选择 For-each 操作的屏幕截图。

  3. 对于 从前面的步骤中选择输出,请选择闪电或输入 / 并选择 “插入动态内容”。

  4. 在“从主题订阅获取消息”下选择“正文”(速览锁定)。

    显示选择的 For-each 输入的屏幕截图。

在 For each 循环中添加一个步骤,以发送包含消息正文的电子邮件

  1. For Each 循环中,选择 +,然后选择 添加操作

    显示“For-each 循环”中选择“+”按钮的屏幕截图。

  2. 搜索 Office 365 ,然后选择“ 查看更多”。

  3. 在搜索结果中选择“Office 365 Outlook”。

    显示选择 Office 365 的屏幕截图。

  4. 在操作列表中,选择“发送电子邮件(V2)”。

    显示选择“发送电子邮件”操作的屏幕截图。

  5. 选择“登录”,然后按照步骤创建与 Office 365 Outlook 的连接。

  6. 在“发送电子邮件(V2)”窗口中,执行以下步骤:

  7. 在“正文”文本框内部单击,然后执行以下步骤:

    1. 对于“收件人”,请输入电子邮件地址。

    2. 对于“主题”,请输入“从服务总线主题的订阅收到的消息”。

    3. 正文中,选择表达式或输入 / 并选择 Insert 表达式。

    4. 输入以下表达式:

      base64ToString(items('For_each')?['ContentData'])
      
    5. 选择 并添加

      显示“发送电子邮件”活动的“正文”的表达式的屏幕截图。

在 For each 循环中添加另一个操作以完成消息

  1. For Each 循环中,选择 +,然后选择 “添加操作”

    1. 搜索“服务总线”。

    2. 在操作列表中选择“完成主题订阅中的消息”。

      显示选择“完成主题订阅中的邮件”的屏幕截图。

    3. 选择你的服务总线主题。

    4. 选择主题的订阅。

    5. “消息锁定令牌”中,选择表达式或输入 / 并选择“插入”表达式。

    6. 选择 “动态内容 ”,然后选择“ 锁定令牌”。 选择 并添加

      显示锁定令牌字段的屏幕截图。

  2. 在逻辑应用设计器的工具栏上选择“保存”以保存逻辑应用。

    显示“逻辑应用设计器”中的“保存”按钮的屏幕截图。

测试应用程序

  1. 如果尚未向主题发送测试消息,请按照向服务总线主题发送消息部分中的说明将消息发送到主题。

  2. 导航到逻辑应用的 “概述 ”页。 然后选择底部窗格中的“ 运行历史记录 ”选项卡。 你会看到逻辑应用运行发送到主题的消息。 可能需要几分钟时间,你才能看到逻辑应用运行。 选择工具栏上的“刷新”,以刷新页面。

    显示逻辑应用运行历史记录的屏幕截图。

  3. 选择一个逻辑应用运行,查看详细信息。 请注意,它在 for 循环中处理了五条消息。

    显示所选逻辑应用运行的详细信息的屏幕截图。

  4. 对于逻辑应用收到的每条消息,你都会收到一封电子邮件。

    Outlook 的屏幕截图,其中包含从主题订阅接收的邮件。

故障排除

如果在等待和刷新一段时间后没有看到任何调用,请执行以下步骤:

  1. 确认消息已到达服务总线主题。 查看“服务总线主题”页面上的“传入消息”计数器。 在这种情况下, MessageSender 应用程序运行一次,因此有 5 条消息。

    显示“服务总线主题”页面的屏幕截图,其中选择了传入邮件计数。

  2. 确认服务总线订阅中有“无活动消息”。

    如果在此页面上未看到任何事件,请验证“服务总线订阅”页面没有显示任何“活动消息计数”。 如果此计数器的数字大于零,则由于某些原因,订阅中的消息没有转发到处理程序函数(事件订阅处理程序)。 验证是否已正确设置事件订阅。

    显示“服务总线订阅”页面的屏幕截图,其中选择了活动邮件计数。

  3. 你还可在服务总线命名空间的“事件”页面上查看发送的事件数。

    显示“服务总线命名空间”页面的“事件”页面的屏幕截图。

  4. 还可在“事件订阅”页面上看到事件已发送。 可在“事件”页面上选择事件订阅来访问此页面。

    显示“事件订阅”页面的屏幕截图,其中选择了传递的事件计数。