有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JPA中的java同步计数查询

我的申请有工作。每个作业包含许多处于不同状态的任务(任务状态:初始、运行、重试、成功、失败)。每个任务的响应都会发送到一个队列。我的应用程序有100个使用者处理来自该队列的任务响应(容器管理的MDB)。每个使用者处理任务响应xml,响应xml中的状态基会更改任务在数据库中的状态(例如从运行到重试等)。如果任务状态变为成功或失败(在所有重试都已用尽后),则我的应用程序必须向上游应用程序发送一个响应,指示任务状态、作业中的总任务数、当前任务数(此作业已达到最终状态的任务数,即成功或失败)

我使用JPA计数查询来获取作业和当前任务中的总任务。我的问题是使用计数查询来获取当前任务号。考虑我的任务A任务T1、T2和T3。如果我的使用者并行处理消息,比如T1和T2都是由两个使用者并行处理的,那么计数查询会导致问题,因为T1和T2计数查询都会为这两个任务返回1,因为它们似乎是并行处理的(而不是我预期的1和2的输出)。我不知道如何同步,因为我不想在一个作业中按顺序处理任务,因为一个作业中可能有超过40000个任务,而且该事务是进一步的容器管理事务。有没有一种方法可以在不按顺序处理任务的情况下获得正确的任务计数


共 (0) 个答案