在 Azure 逻辑应用中发送、接收和批处理消息
适用于:Azure 逻辑应用(消耗)
若要以特定的方式将消息作为组一起发送和处理,可以创建批处理解决方案。 此解决方案会将消息收集到一个批处理中,并在满足指定的条件之前一直等待,然后再释放并处理批处理消息。 批处理可以减少逻辑应用处理消息的频率。
此操作指南介绍了如何按以下顺序在同一个 Azure 订阅和 Azure 区域中创建两个逻辑应用,从而构建批处理解决方案:
“批接收方”逻辑应用:接受消息并将其收集到批中,直到满足发布和处理这些消息的指定条件。 请务必先创建该批接收方,然后才能在创建批发送方时选择批处理目标。
一个或多个“批发送方”逻辑应用:将消息发送到前面创建的批接收方。
批发送方还可以指定唯一键,以基于该键将目标批分区或分割为逻辑子集。 例如,客户编号是唯一键。 这样,接收方应用便可以收集具有相同键的所有项,并统一处理它们。
批接收方和批发送方需要共享同一个 Azure 订阅和 Azure 区域。 否则,在创建批发送方时无法选择批接收方,因为它们相互不可见。
先决条件
Azure 帐户和订阅。 如果没有订阅,可以从 Azure 试用帐户着手。
具有任何 Azure 逻辑应用支持的电子邮件提供商的电子邮件帐户
有关逻辑应用工作流的基础知识
若要使用 Visual Studio 而不是 Azure 门户,请确保设置 Visual Studio 以使用逻辑应用。
限制
发布后,只能通过将已发布的内容与源进行比较来检查批中的内容。
仅可通过更改批处理接收器中的发布条件(本指南中所述)提前发布批处理,而触发器仍具有批处理。 但是,触发器对任何未发送的消息使用更新的发布条件。
创建批接收方
在将消息发送到某个批之前,该批必须存在且充当这些消息要发送到的目标。 因此,首先必须创建可以通过“批处理”触发器启动的“批接收方”逻辑应用。 这样,在创建“批发送方”逻辑应用时,便可以选择批接收方逻辑应用。 批接收方会持续收集消息,直到满足发布和处理这些消息的指定条件。 尽管批接收方不需要知道有关批发送方的任何信息,但批发送方必须知道要将消息发送到的目标。
在 Azure 门户或 Visual Studio 中,创建具有以下名称的逻辑应用:
BatchReceiver
在工作流设计器中,添加批触发器,可启动逻辑应用工作流。 在搜索框中,输入
batch
,然后选择以下触发器:“批处理消息”为批接收方设置以下属性:
属性 说明 批处理模式 - 内联:用于在批处理触发器中定义发布条件
- 集成帐户:用于通过集成帐户定义多个发布条件配置。 使用集成帐户可在一个位置而不是独立的逻辑应用中维护这些配置。批名称 批的名称(在本示例中为“TestBatch”),仅适用于“内联”批处理模式 发布条件 仅适用于“内联”批处理模式,选择在处理每个批之前所要满足的条件: - 基于消息计数:根据批收集的消息数发布批。
- 基于大小:根据批收集的所有消息的总大小(以字节为单位)发布批。
- 计划:根据指定间隔和频率的定期计划发布批。 在高级选项中,还可以选择时区,并提供开始日期和时间。
- 全选:使用所有指定的条件。消息计数 要在批中收集的消息数,例如 10 条消息。 批的限制为 8,000 条消息。 批大小 批中要收集的总大小(以字节为单位),例如10 MB。 批的大小上限是 80 MB。 计划 发布批的间隔时间和频率,例如 10 分钟。 最小重复周期为 60 秒或 1 分钟。 分数分钟有效地向上舍入到 1 分钟。 若要指定时区或开始日期和时间,请打开“添加新参数”列表,然后选择相应的属性。 注意
如果在触发器仍具有已批处理但未发送的消息时更改发布条件,则触发器将使用更新的发布条件来处理未发送的消息。
此示例显示了所有条件,但是对于自己的测试,请仅尝试一个条件:
现在,添加一个或多个操作用于处理每个批。
本示例添加一个可在批处理触发器激发时发送电子邮件的操作。 当批包含 10 个消息、达到 10 MB 或者在 10 分钟过后,该触发器将运行并发送电子邮件。
在批处理触发器下,选择“新建步骤”。
在搜索框中,输入
send email
作为筛选器。 基于电子邮件提供商,选择电子邮件连接器。例如,如果用户有工作或学校帐户(如 @fabrikam.com 或 @fabrikam.partner.onmschina.cn),请选择 Microsoft 365 Outlook 连接器。 如果用户人帐户(如 @outlook.com 或 @hotmail.com),请选择 Outlook.com 连接器。 此示例使用 Microsoft 365 Outlook 连接器。
为用户的提供商选择“发送电子邮件”操作,例如:
根据提示登录到电子邮件帐户。
为添加的操作设置属性。
在“收件人”框中,输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。
在“主题”框中,当“动态内容”列表出现时,请选择“分区名称”字段。
稍后,在批发送方中,可以指定唯一分区键,将目标批划分为可以在其中发送消息的逻辑子集。 每个集都具有批发送方逻辑应用生成的唯一编号。 此功能使你可以使用具有多个子集的单个批,并且使用你提供的名称定义每个子集。
重要
分区的限制为 5,000 条消息或 80 MB。 如果满足任一条件,则逻辑应用可以发布批,即使不满足定义的发布条件。
在“正文”框中,当“动态内容”列表出现时,请选择“消息 ID”字段。
工作流设计器会自动在发送电子邮件操作周围添加 For each 循环,因为该操作会将上一个操作的输出视为集合而不是批。
保存逻辑应用。 现已创建批接收方。
重要
如果用户使用的是 Visual Studio,则在继续下一部分之前,请确保先将批接收方逻辑应用部署到 Azure。 否则,在创建批发送方时无法选择批接收方。
创建批发送方
现在创建一个或多个批发送方逻辑应用,用于将消息发送到批接收方逻辑应用。 在每个批发送方中,指定批接收方和批名称、消息内容及其他任何设置。 可以选择性地提供唯一分区键,以将批分割为子集,从而收集具有该键的消息。
确保先前创建和部署了批接收方,这样在创建批发送方时,就可以选择现有的批接收方作为目标批。 尽管批接收方不需要知道有关批发送方的任何信息,但批发送方必须知道要将消息发送到何处。
请确保批接收方和批发送方共享同一个 Azure 区域和 Azure 订阅。 否则,在创建批发送方时无法选择批接收方,因为它们相互不可见。
创建具有以下名称的另一个逻辑应用:
BatchSender
在搜索框中,输入
recurrence
作为筛选器。 从触发器列表中选择此触发器:定期设置间隔和频率以便每分钟运行一次发送方逻辑应用。
添加用于将消息发送到批的新操作。
在定期触发器下,选择“新建步骤”。
在搜索框中,输入
batch
作为筛选器,然后选择以下操作:使用批处理触发器选择逻辑应用工作流此时将弹出一个列表,其中仅显示具有批处理触发器的逻辑应用,这些逻辑应用与批发送方逻辑应用位于同一 Azure 区域和 Azure 订阅中。
从“逻辑应用”列表中,选择前面创建的批接收方逻辑应用。
重要
如果使用的是 Visual Studio 并且看不到任何可供选择的批接收方,请检查先前是否创建了批接收方并将其部署到 Azure。 如果未部署,请了解如何将批接收方逻辑应用部署到 Azure。
从操作列表中,选择此操作:Batch_messages - <your-logic-app-name>
设置批发送方的属性:
属性 说明 批名称 接收方逻辑应用定义的批名称,在本示例中为 TestBatch
重要说明:批名称在运行时将接受验证,必须与接收方逻辑应用指定的名称相匹配。 更改批名称会导致批发送方失败。
消息内容 要发送的消息内容 注意
“触发器名称”和“工作流”属性值将自动从所选逻辑应用填充。
本示例将添加以下表达式,该表达式在要发送到批的消息内容中插入当前日期和时间:
在“消息内容”框中单击。
当“动态内容”列表弹出时,选择“表达式”。
输入表达式
utcnow()
,然后选择“确定”。
现在为批设置分区。 在
BatchReceiver
操作中,打开“添加新参数”列表,然后选择这些属性:属性 说明 分区名称 可选的唯一分区键,用于将目标批分割为逻辑子集,并基于该键收集消息 消息 ID 可选的消息标识符,为空时是系统生成的全局唯一标识符 (GUID) 对于本示例,请在“分区名称”框中添加一个表达式,用于生成介于 1 和 5 之间的随机数。 将“消息 ID”框留空。
在“分区名称”框中单击,以显示动态内容列表。
在动态内容列表中,选择“表达式”。
输入表达式
rand(1,6)
,然后选择“确定”。此 rand 函数生成介于一与五之间的数字。 因此会将此批划分为五个带编号的分区(由此表达式动态设置)。
保存逻辑应用。 发送方逻辑应用现在类似于此示例:
测试逻辑应用
若要测试批处理解决方案,请让逻辑应用运行几分钟。 很快,你会开始收到五封一组的电子邮件,它们具有相同的分区键。
批发送方逻辑应用每分钟运行一次,并生成一个介于 1 到 5 之间的随机数。 批发送方将此随机数用作发送消息的目标批的分区键。 每当批中包含具有相同分区键的 5 个项时,批接收方逻辑应用都会激发并针对每个消息发送邮件。
重要
完成测试之后,确保禁用BatchSender
逻辑应用以停止发送消息,避免收件箱重载。