design-patterns - 是否有聚合异步文件处理的设计模式
问题描述
文件命中系统。该文件包含多个实体,每个实体都由多节点 Service Fabric 无状态服务单独异步处理。
系统需要知道最终实体何时处理,以便可以将文件标记为完全完成处理。
例如,收到的文件包含 150 个实体。每个实体都在 Azure 存储队列中排队,并由无状态服务实例拾取并进行处理。当最终实体处理该文件时,应将其标记为“处理完成”。
是否有定义这种过程的具体模式或抽象?或者也许有一个通用的设计可用?
解决方案
这听起来像是聚合器设计模式的工作。
为该文件创建一个关联 ID,并确保将该 ID 附加到您排队的每个实体。
除了将所有实体排入队列之外,您还可以发送具有相同 ID 的消息,该消息仅包含实体总数。
实体处理程序在处理实体后应发布带有相关 ID 的“EntityCompleted”事件。
聚合器订阅这些消息并计算每个关联 ID 已完成的实体数量。当处理的实体数量达到总数时,可以将文件标记为完全处理。
一般来说,如果您按照您的描述进行异步消息传递,您应该购买并阅读Enterprise Integration Patterns。
推荐阅读
- caching - Liferay 6.1,已删除文档版本中的资产标签出现在新版本中
- javascript - 如何筛选 SharePoint REST 结果?
- c# - 如何在 Winforms 上使用 C# 向应用程序发送消息?
- linker - 进程链接是否仍会在 libc.a 中加载 o 文件?
- python - python fbprophet错误,TypeError:'module'对象不可调用
- python - python中的'builtin_function_or_method'对象没有属性'__getitem__'错误
- sql - 创建所有数据库更改的数据库脚本在定义的时间段内发生
- node.js - 为什么 setstate 中的 *contact 未定义?
- python - 想要传递 false 但得到 Nameerror 异常
- keras - 双曲坐标(Poincaré 嵌入)作为神经网络的输出