如何在 Mule 中轮询直到所有作业完成
How to poll in Mule until all jobs are completed
我需要构建一个工作流,通过调用一个 API 触发一组批处理作业,然后轮询另一个 API 以检查每个批处理作业何时完成。只有当所有批处理作业都完成后,工作流程才能进入下一步。做这个的最好方式是什么?
我曾考虑过使用投票组件,但我不确定如何启动和停止投票,因为我的经验是 运行 在预定时间进行投票或持续对外部源进行投票。我目前的思路是在表达式框中使用一个标志,一旦所有批处理作业完成,该标志就会设置为 true。
另一个问题是批处理作业 ID 都在一个 JSON 对象中,当 API 开始到 [=24] 时,检查每个批处理作业 ID 的最佳方法是什么=] 结果显示批处理作业已完成?
我正在使用 Anypoint Studio 6.2 和 Mule 3.8.3
谢谢
首先 - 假设您的 api 调用触发 5 个批处理作业。在每个作业完成时,您需要在数据库或对象存储(或任何其他可检索方式)中更新作业 success/failure/inprogress 的状态。
假设您的作业将在 1 小时内完成。
假设您正在更新数据库中的状态。
创建轮询流程以每隔一小时在数据库中检查您的工作状态是否为 success/failure,并使您的流程处于 stopped
状态。
<flow name="Job_status_check_flow" initialState="stopped">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="1" timeUnit="HOURS"/>
<logger level="INFO" doc:name="Logger"/>
</poll>
<logger message="poll" level="INFO" doc:name="Logger"/>
<db component or object store here --->
</flow>
由于流程处于停止状态,轮询不会触发,直到流程变为启动状态。你有一个控制。
流程始终处于停止状态state.When您请求api同时触发5个批处理作业同时启动'Job_status_check_flow'到start
(您可以使用 groovy component- 根据条件启动和停止流)。请检查以下链接
Starting a mule flow programmatically using groovy
auto-starting Mule flow
在这种情况下,轮询流程每 1 小时检查一次状态,直到 DB 将 5 个作业的所有状态检索到已完成状态。如果是这样,在 'Job_status_check_flow' 到 stopped state
的末尾有一个 groovy 组件。这样投票就不会再触发了。
我需要构建一个工作流,通过调用一个 API 触发一组批处理作业,然后轮询另一个 API 以检查每个批处理作业何时完成。只有当所有批处理作业都完成后,工作流程才能进入下一步。做这个的最好方式是什么?
我曾考虑过使用投票组件,但我不确定如何启动和停止投票,因为我的经验是 运行 在预定时间进行投票或持续对外部源进行投票。我目前的思路是在表达式框中使用一个标志,一旦所有批处理作业完成,该标志就会设置为 true。
另一个问题是批处理作业 ID 都在一个 JSON 对象中,当 API 开始到 [=24] 时,检查每个批处理作业 ID 的最佳方法是什么=] 结果显示批处理作业已完成?
我正在使用 Anypoint Studio 6.2 和 Mule 3.8.3
谢谢
首先 - 假设您的 api 调用触发 5 个批处理作业。在每个作业完成时,您需要在数据库或对象存储(或任何其他可检索方式)中更新作业 success/failure/inprogress 的状态。
假设您的作业将在 1 小时内完成。
假设您正在更新数据库中的状态。
创建轮询流程以每隔一小时在数据库中检查您的工作状态是否为 success/failure,并使您的流程处于 stopped
状态。
<flow name="Job_status_check_flow" initialState="stopped">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="1" timeUnit="HOURS"/>
<logger level="INFO" doc:name="Logger"/>
</poll>
<logger message="poll" level="INFO" doc:name="Logger"/>
<db component or object store here --->
</flow>
由于流程处于停止状态,轮询不会触发,直到流程变为启动状态。你有一个控制。
流程始终处于停止状态state.When您请求api同时触发5个批处理作业同时启动'Job_status_check_flow'到start
(您可以使用 groovy component- 根据条件启动和停止流)。请检查以下链接
Starting a mule flow programmatically using groovy
auto-starting Mule flow
在这种情况下,轮询流程每 1 小时检查一次状态,直到 DB 将 5 个作业的所有状态检索到已完成状态。如果是这样,在 'Job_status_check_flow' 到 stopped state
的末尾有一个 groovy 组件。这样投票就不会再触发了。