1

这确实是Google Cloud Spanner Java API 团队的一个问题……

查看新的Google Cloud Spanner服务,似乎执行读/写事务的唯一方法是通过TransactionRunner接口提供回调。

我知道 API 试图隐藏需要自动重试事务的细节以方便程序员,但这个限制是一个严重的问题,至少对我来说是这样。我需要能够自己管理事务生命周期,即使这意味着我必须执行自己的重试(例如,基于捕获某种“可重试”异常)。

为了使这个问题更具体,假设您想PlatformTransactionManager为 Google Cloud Spanner 实现 Spring,以适应您现有的代码,并使用您现有的重试逻辑。用当前的 Java API 似乎不可能做到这一点。

似乎很容易以向后兼容的方式扩充 API,添加一个返回 aTransactionContext给用户的方法,并让用户处理重试。

我错过了什么吗?可以将这种替代(更传统的)事务 API 样式添加到 Java API 中吗?

4

1 回答 1

1

您是对的,因为 TransactionRunner 是在 Cloud Spanner 的 Java 客户端中执行读写事务的唯一方法。我们相信大多数用户更喜欢使用它而不是手动滚动他们自己的重试逻辑。但我们意识到它可能无法满足所有用户的需求,并且很想听听这样的用例。您能否提交功能请求,我们可以在那里进一步讨论。

于 2017-02-15T04:51:46.407 回答