首页 > 解决方案 > 是否有聚合异步文件处理的设计模式

问题描述

文件命中系统。该文件包含多个实体,每个实体都由多节点 Service Fabric 无状态服务单独异步处理。

系统需要知道最终实体何时处理,以便可以将文件标记为完全完成处理。

例如,收到的文件包含 150 个实体。每个实体都在 Azure 存储队列中排队,并由无状态服务实例拾取并进行处理。当最终实体处理该文件时,应将其标记为“处理完成”。

是否有定义这种过程的具体模式或抽象?或者也许有一个通用的设计可用?

标签: design-patterns

解决方案


这听起来像是聚合器设计模式的工作。

为该文件创建一个关联 ID,并确保将该 ID 附加到您排队的每个实体。

除了将所有实体排入队列之外,您还可以发送具有相同 ID 的消息,该消息仅包含实体总数。

实体处理程序在处理实体后应发布带有相关 ID 的“EntityCompleted”事件。

聚合器订阅这些消息并计算每个关联 ID 已完成的实体数量。当处理的实体数量达到总数时,可以将文件标记为完全处理。

一般来说,如果您按照您的描述进行异步消息传递,您应该购买并阅读Enterprise Integration Patterns


推荐阅读