这确实是Google Cloud Spanner Java API 团队的一个问题……
查看新的Google Cloud Spanner服务,似乎执行读/写事务的唯一方法是通过TransactionRunner
接口提供回调。
我知道 API 试图隐藏需要自动重试事务的细节以方便程序员,但这个限制是一个严重的问题,至少对我来说是这样。我需要能够自己管理事务生命周期,即使这意味着我必须执行自己的重试(例如,基于捕获某种“可重试”异常)。
为了使这个问题更具体,假设您想PlatformTransactionManager
为 Google Cloud Spanner 实现 Spring,以适应您现有的代码,并使用您现有的重试逻辑。用当前的 Java API 似乎不可能做到这一点。
似乎很容易以向后兼容的方式扩充 API,添加一个返回 aTransactionContext
给用户的方法,并让用户处理重试。
我错过了什么吗?可以将这种替代(更传统的)事务 API 样式添加到 Java API 中吗?