1
1
我假设整个事务已经准备好,并且提交结果由TransactionManager决定,因此最终(除非有启发式的破坏),资源管理器将收到它们的提交消息并完成。但是,对于可能需要多长时间(可能是几天),不应用超时,在准备资源管理器时已投票“提交”,没有任何保证。 必须 等待听到集体的结果。 在这种情况下,最简单的方法是采用“理解,我们在思考”的方法。您的请求已被理解,但实际上您不知道结果,这就是您告诉用户的。是的,在所有正常情况下,请求都将完成,但在某些情况下,操作员实际上可以选择手动干预事务(这样做可能会导致启发式的损坏)。 为了更进一步,您可以启动一个新事务并执行一些查询,以查看数据是否存在。现在,如果您正在填充一个结果屏幕,那么您自然会执行查询等操作。如果没有预期的结果,问题是该怎么做。因此,再次告诉用户“最近的请求正在处理中,点击刷新查看是否完成”。或者自动重试(我不太喜欢自动重试——更喜欢告诉用户它实际上是一个异步操作。) |