多实例Activiti 6设置中的作业取消

问题描述 投票:0回答:1

我有一项服务,该服务可同时启动Activiti实例并有助于工作管理。为了满足可伸缩性需求,我计划分拆该服务的多个实例。这意味着在负载均衡器后面有多个Activit 6引擎实例。所有这些最终都连接到同一数据库。

作业取消在单实例设置中效果很好。但是,当我有多个Activiti实例时,取消不能可靠地工作。为了进一步说明,如果Activiti实例#1已启动作业#1和#2,而实例#2已启动#3和#4。如果将取消作业1的请求发送到Activiti#1可以正常工作,但是如果该请求进入2号,则取消工作将不起作用。

我完成这项工作的一种方法是将每个取消请求广播到每个Activiti实例。另一个对我来说是从外部预订与每个工作相关联的实例。这两个看起来都不干净。

我的问题-处理此类情况的最佳做法是什么?有没有可以遵循的建议模式?

提前感谢。

java microservices workflow activiti bpmn
1个回答
0
投票

显然,对于单个引擎实例,正确的答案是使用信号或消息事件处理程序,但是,正如您所说,这不适用于多个引擎实例。广播选项可能是最简单的,如果实例不在消息有意义的过程的一部分中,则它将被忽略。尽管更复杂,但更干净的解决方案是将这种处理外部化到应用程序表中,甚至简单到文件系统上的文件之类的东西。实例将查找“标志”并退出,但是您需要确保在最后一个实例退出时清除该标志。无论哪种方式,我都无法想到引擎内部会提供您所需的任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.