我需要在事件发生后自动化工作流。我确实有CRUD应用程序的经验,但没有工作流/批处理方面的经验。在设计系统时需要帮助。
需求
工作流包括5个步骤。每个步骤都是一个REST调用,并且依赖于前面的步骤。步骤实例:(VerifyIfUserInSystem,CreateUserIfNeeded,EnrollInOpt1,EnrollInOpt2,.)
我的想法是维护两个DB表。
问题
#1.这是一个正确的方法来编排系统(这不是那么复杂)吗?
#2.由于步骤涉及REST调用,所以当服务不可用时,我可能不得不停止该进程,并在稍后的时间点继续该过程。我不确定是否应该进行多次重试,以及在将其标记为失败之前如何维持不尝试。(猜测在WORKFLOW_STATUS表中创建另一个名为RETRY_ATTEMPT的列,并在标记失败之前设置一些限制)
#3 EVENT_LOG表是一个正确的设计吗?对于异常日志,我应该使用什么数据类型(clob或varchar(2048年))?每个步骤/重试尝试都将作为新记录插入到此表中。
#4如何在依赖服务备份后重置/重新启动失败的条目。
如果有的话,请给我一个博客/视频/资源。提前谢谢。
发布于 2022-04-01 08:19:02
您将描述一个企业集成模式,它包含来自REST调用的丰富/转换和结果的有状态聚合(因此,许多这样的流可能在任何时候都在进行)。阿帕奇骆驼正是针对这些场景而设计的。
请参阅阿帕奇骆驼到底是什么?
发布于 2022-03-07 18:32:56
你有没有考虑过使用像Netflix的导体一样的工作流编排引擎?文档,Github。
售票员配备了许多你正在寻找内置的功能。
下面是一个使用两个顺序HTTP请求(第二个请求需要来自第一个请求的响应)的示例工作流:

输入提供了一个IP地址(和一个Accuweather键)
{
"ipaddress": "98.11.11.125"
}此工作流的输出是:
{
"zipcode": "04043",
"forecast": "rain"
}你的问题:
"retryCount": 3,
"retryLogic": "FIXED",
"retryDelaySeconds": 5,在连接内部,可以调整更多的参数:
"connectionTimeOut": 1600,
"readTimeOut": 1600如果需要,还有指数重试逻辑。
我已经在导体游乐场中启动并运行了这个称为"Stack_overflow_sequential_http“的工作流。创建一个免费帐户。运行工作流--单击“运行工作流,选择"Stack_overflow_sequential_http”并使用上面的JSON查看它的运行情况。
get_weather连接是一个非常慢的API,因此在成功之前它可能会失败几次。复制工作流,并使用超时值来提高成功。
https://stackoverflow.com/questions/71370237
复制相似问题