在 Azure 逻辑应用中发送、接收和批处理消息

适用于:Azure 逻辑应用(消耗)

若要以特定的方式将消息作为组一起发送和处理,可以创建批处理解决方案。 此解决方案会将消息收集到一个批处理中,并在满足指定的条件之前一直等待,然后再释放并处理批处理消息。 批处理可以减少逻辑应用处理消息的频率。

此操作指南介绍了如何按以下顺序在同一个 Azure 订阅和 Azure 区域中创建两个逻辑应用,从而构建批处理解决方案:

  1. “批接收方”逻辑应用:接受消息并将其收集到批中,直到满足发布和处理这些消息的指定条件。 请务必先创建该批接收方,然后才能在创建批发送方时选择批处理目标。

  2. 一个或多个“批发送方”逻辑应用:将消息发送到前面创建的批接收方。

    批发送方还可以指定唯一键,以基于该键将目标批分区或分割为逻辑子集。 例如,客户编号是唯一键。 这样,接收方应用便可以收集具有相同键的所有项,并统一处理它们。

批接收方和批发送方需要共享同一个 Azure 订阅和 Azure 区域。 否则,在创建批发送方时无法选择批接收方,因为它们相互不可见。

先决条件

限制

  • 发布后,只能通过将已发布的内容与源进行比较来检查批中的内容。

  • 仅可通过更改批处理接收器中的发布条件(本指南中所述)提前发布批处理,而触发器仍具有批处理。 但是,触发器对任何未发送的消息使用更新的发布条件。

创建批接收方

在将消息发送到某个批之前,该批必须存在且充当这些消息要发送到的目标。 因此,首先必须创建可以通过“批处理”触发器启动的“批接收方”逻辑应用。 这样,在创建“批发送方”逻辑应用时,便可以选择批接收方逻辑应用。 批接收方会持续收集消息,直到满足发布和处理这些消息的指定条件。 尽管批接收方不需要知道有关批发送方的任何信息,但批发送方必须知道要将消息发送到的目标。

  1. Azure 门户或 Visual Studio 中,创建具有以下名称的逻辑应用:BatchReceiver

  2. 在工作流设计器中,添加触发器,可启动逻辑应用工作流。 在搜索框中,输入 batch,然后选择以下触发器:“批处理消息

    添加“批处理消息”触发器

  3. 为批接收方设置以下属性:

    属性 说明
    批处理模式 - 内联:用于在批处理触发器中定义发布条件
    - 集成帐户:用于通过集成帐户定义多个发布条件配置。 使用集成帐户可在一个位置而不是独立的逻辑应用中维护这些配置。
    批名称 批的名称(在本示例中为“TestBatch”),仅适用于“内联”批处理模式
    发布条件 仅适用于“内联”批处理模式,选择在处理每个批之前所要满足的条件:

    - 基于消息计数:根据批收集的消息数发布批。
    - 基于大小:根据批收集的所有消息的总大小(以字节为单位)发布批。
    - 计划:根据指定间隔和频率的定期计划发布批。 在高级选项中,还可以选择时区,并提供开始日期和时间。
    - 全选:使用所有指定的条件。

    消息计数 要在批中收集的消息数,例如 10 条消息。 批的限制为 8,000 条消息。
    批大小 批中要收集的总大小(以字节为单位),例如10 MB。 批的大小上限是 80 MB。
    计划 发布批的间隔时间和频率,例如 10 分钟。 最小重复周期为 60 秒或 1 分钟。 分数分钟有效地向上舍入到 1 分钟。 若要指定时区或开始日期和时间,请打开“添加新参数”列表,然后选择相应的属性。

    注意

    如果在触发器仍具有已批处理但未发送的消息时更改发布条件,则触发器将使用更新的发布条件来处理未发送的消息。

    此示例显示了所有条件,但是对于自己的测试,请仅尝试一个条件:

    提供批触发器详细信息

  4. 现在,添加一个或多个操作用于处理每个批。

    本示例添加一个可在批处理触发器激发时发送电子邮件的操作。 当批包含 10 个消息、达到 10 MB 或者在 10 分钟过后,该触发器将运行并发送电子邮件。

    1. 在批处理触发器下,选择“新建步骤”。

    2. 在搜索框中,输入 send email 作为筛选器。 基于电子邮件提供商,选择电子邮件连接器。

      例如,如果用户有工作或学校帐户(如 @fabrikam.com 或 @fabrikam.partner.onmschina.cn),请选择 Microsoft 365 Outlook 连接器。 如果用户人帐户(如 @outlook.com 或 @hotmail.com),请选择 Outlook.com 连接器。 此示例使用 Microsoft 365 Outlook 连接器。

    3. 为用户的提供商选择“发送电子邮件”操作,例如:

      为电子邮件提供商选择“发送电子邮件”操作

  5. 根据提示登录到电子邮件帐户。

  6. 为添加的操作设置属性。

    • 在“收件人”框中,输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。

    • 在“主题”框中,当“动态内容”列表出现时,请选择“分区名称”字段。

      从“动态内容”列表中选择“分区名称”

      稍后,在批发送方中,可以指定唯一分区键,将目标批划分为可以在其中发送消息的逻辑子集。 每个集都具有批发送方逻辑应用生成的唯一编号。 此功能使你可以使用具有多个子集的单个批,并且使用你提供的名称定义每个子集。

      重要

      分区的限制为 5,000 条消息或 80 MB。 如果满足任一条件,则逻辑应用可以发布批,即使不满足定义的发布条件。

    • 在“正文”框中,当“动态内容”列表出现时,请选择“消息 ID”字段。

      工作流设计器会自动在发送电子邮件操作周围添加 For each 循环,因为该操作会将上一个操作的输出视为集合而不是批。

      对于“正文”,选择“消息 ID”

  7. 保存逻辑应用。 现已创建批接收方。

    保存逻辑应用

    重要

    如果用户使用的是 Visual Studio,则在继续下一部分之前,请确保先将批接收方逻辑应用部署到 Azure。 否则,在创建批发送方时无法选择批接收方。

创建批发送方

现在创建一个或多个批发送方逻辑应用,用于将消息发送到批接收方逻辑应用。 在每个批发送方中,指定批接收方和批名称、消息内容及其他任何设置。 可以选择性地提供唯一分区键,以将批分割为子集,从而收集具有该键的消息。

  • 确保先前创建和部署了批接收方,这样在创建批发送方时,就可以选择现有的批接收方作为目标批。 尽管批接收方不需要知道有关批发送方的任何信息,但批发送方必须知道要将消息发送到何处。

  • 请确保批接收方和批发送方共享同一个 Azure 区域 Azure 订阅。 否则,在创建批发送方时无法选择批接收方,因为它们相互不可见。

  1. 创建具有以下名称的另一个逻辑应用:BatchSender

    1. 在搜索框中,输入 recurrence 作为筛选器。 从触发器列表中选择此触发器:定期

      添加重复触发器

    2. 设置间隔和频率以便每分钟运行一次发送方逻辑应用。

      为定期触发器设置频率和间隔

  2. 添加用于将消息发送到批的新操作。

    1. 定期触发器下,选择“新建步骤”。

    2. 在搜索框中,输入 batch 作为筛选器,然后选择以下操作:使用批处理触发器选择逻辑应用工作流

      选择“选择具有批处理触发器的逻辑应用工作流”

      此时将弹出一个列表,其中仅显示具有批处理触发器的逻辑应用,这些逻辑应用与批发送方逻辑应用位于同一 Azure 区域 Azure 订阅中。

    3. 从“逻辑应用”列表中,选择前面创建的批接收方逻辑应用。

      选择批接收方逻辑应用

      重要

      如果使用的是 Visual Studio 并且看不到任何可供选择的批接收方,请检查先前是否创建了批接收方并将其部署到 Azure。 如果未部署,请了解如何将批接收方逻辑应用部署到 Azure

    4. 从操作列表中,选择此操作:Batch_messages - <your-logic-app-name>

      选择此操作:“Batch_messages - <your-logic-app>”

  3. 设置批发送方的属性:

    属性 说明
    批名称 接收方逻辑应用定义的批名称,在本示例中为 TestBatch

    重要说明:批名称在运行时将接受验证,必须与接收方逻辑应用指定的名称相匹配。 更改批名称会导致批发送方失败。

    消息内容 要发送的消息内容

    注意

    触发器名称”和“工作流”属性值将自动从所选逻辑应用填充。

    本示例将添加以下表达式,该表达式在要发送到批的消息内容中插入当前日期和时间:

    1. 在“消息内容”框中单击。

    2. 当“动态内容”列表弹出时,选择“表达式”。

    3. 输入表达式 utcnow(),然后选择“确定”。

      在“消息内容”中,选择“表达式”,输入“utcnow()”,然后选择“确定”。

  4. 现在为批设置分区。 在 BatchReceiver 操作中,打开“添加新参数”列表,然后选择这些属性:

    属性 说明
    分区名称 可选的唯一分区键,用于将目标批分割为逻辑子集,并基于该键收集消息
    消息 ID 可选的消息标识符,为空时是系统生成的全局唯一标识符 (GUID)

    对于本示例,请在“分区名称”框中添加一个表达式,用于生成介于 1 和 5 之间的随机数。 将“消息 ID”框留空。

    1. 在“分区名称”框中单击,以显示动态内容列表。

    2. 在动态内容列表中,选择“表达式”。

    3. 输入表达式 rand(1,6),然后选择“确定”。

      为目标批设置分区

      rand 函数生成介于一与五之间的数字。 因此会将此批划分为五个带编号的分区(由此表达式动态设置)。

  5. 保存逻辑应用。 发送方逻辑应用现在类似于此示例:

    保存发送方逻辑应用

测试逻辑应用

若要测试批处理解决方案,请让逻辑应用运行几分钟。 很快,你会开始收到五封一组的电子邮件,它们具有相同的分区键。

批发送方逻辑应用每分钟运行一次,并生成一个介于 1 到 5 之间的随机数。 批发送方将此随机数用作发送消息的目标批的分区键。 每当批中包含具有相同分区键的 5 个项时,批接收方逻辑应用都会激发并针对每个消息发送邮件。

重要

完成测试之后,确保禁用BatchSender逻辑应用以停止发送消息,避免收件箱重载。

后续步骤