Spring Boot 并行服务任务乐观锁异常

np8igboo  于 2023-02-16  发布在  Spring
关注(0)|答案(1)|浏览(192)

问题:服务任务(调用API)被调用两次,出现OptimisticLockingException Case:我有两个子进程,所有调用API的服务任务和子进程在“true”之前都被设置为异步,但得到了OptimisticLockingException。同样,在按顺序继续下一个服务任务之前,同一个服务任务被调用了两次,当发生这种情况时,作为服务任务第一次调用的一部分,从API接收的响应不会保存在数据库中,第二次API调用的响应被保存。
我试图通过exclusive true解决我的服务任务在子流程中顺序运行的问题。现在我希望并行运行子流程,并在子流程中调用同一个服务任务。

wpx232ag

wpx232ag1#

如果要避免在回滚(例如由OLE触发)的情况下第二次执行服务任务,请尝试在服务任务之后设置异步。但是,如果在后续并行网关上之前在服务任务之后设置异步,则不需要此设置。
要处理OLE,最好的做法是在并行网关上设置一个async。

  • “在[...]并行联接并行联接非独占联接多示例任务之前配置保存点:并行连接同步单独的进程路径,这就是为什么同时到达并行连接的两个路径执行中的一个会被乐观锁定异常回滚,并且必须稍后重试。因此,这样的保存点确保路径同步将由Camunda的内部作业执行器处理。注意,对于多示例活动,存在专用的“多示例异步在之后”标志,该标志在那些多示例的执行之后直接保存它们的每个单个示例,因此仍然在它们的技术同步“之前"。

相关问题