Google Cloud Spanner:需要 Java API 进行我自己的重试
Google Cloud Spanner: Want Java API for doing my own retries
这真的是 Google Cloud Spanner Java API 团队的问题...
查看新的 Google Cloud Spanner 服务,似乎执行 read/write 交易的唯一方法是通过 TransactionRunner
接口提供回调。
我知道 API 试图隐藏需要自动重试交易的细节,以方便程序员,但这个限制是一个严重的问题,至少对我而言。我需要能够自己管理事务生命周期,即使这意味着我必须执行自己的重试(例如,基于捕获某种 "retryable" 异常)。
为了使这个问题更具体,假设您想为 Google Cloud Spanner 实现 Spring 的 PlatformTransactionManager
,以适应您现有的代码,并使用您现有的重试逻辑。使用当前的 Java API.
似乎不可能做到这一点
似乎很容易以向后兼容的方式扩充 API,添加一个向用户返回 TransactionContext
的方法,并让用户处理重试。
我错过了什么吗?这种替代(更传统的)交易 API 样式可以添加到 Java API 吗?
您说得对,TransactionRunner 是在 Cloud Spanner 的 Java 客户端中执行读写事务的唯一方法。我们相信大多数用户更喜欢使用它而不是手动滚动他们自己的重试逻辑。但我们意识到它可能无法满足所有用户的需求,并且很乐意听到此类用例。你能file a feature request,我们可以在那里进一步讨论。
这真的是 Google Cloud Spanner Java API 团队的问题...
查看新的 Google Cloud Spanner 服务,似乎执行 read/write 交易的唯一方法是通过 TransactionRunner
接口提供回调。
我知道 API 试图隐藏需要自动重试交易的细节,以方便程序员,但这个限制是一个严重的问题,至少对我而言。我需要能够自己管理事务生命周期,即使这意味着我必须执行自己的重试(例如,基于捕获某种 "retryable" 异常)。
为了使这个问题更具体,假设您想为 Google Cloud Spanner 实现 Spring 的 PlatformTransactionManager
,以适应您现有的代码,并使用您现有的重试逻辑。使用当前的 Java API.
似乎很容易以向后兼容的方式扩充 API,添加一个向用户返回 TransactionContext
的方法,并让用户处理重试。
我错过了什么吗?这种替代(更传统的)交易 API 样式可以添加到 Java API 吗?
您说得对,TransactionRunner 是在 Cloud Spanner 的 Java 客户端中执行读写事务的唯一方法。我们相信大多数用户更喜欢使用它而不是手动滚动他们自己的重试逻辑。但我们意识到它可能无法满足所有用户的需求,并且很乐意听到此类用例。你能file a feature request,我们可以在那里进一步讨论。