springjavagoogle云存储:处理重试次数和延迟

raogr8fs  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(374)

我想知道是否有可能在java代码级别gcs处理重试次数和延迟。
我知道根据文件,有可能修改 num_retries 以及 max_retry_delay .boto配置文件的“[boto]”部分的变量(如下所述https://cloud.google.com/storage/docs/gsutil/addlhelp/retryhandlingstrategy).
但我希望在java代码级别或spring配置中实现同样的功能。有可能吗?

jrcvhitl

jrcvhitl1#

您可以使用名为gaxjava的api扩展构建重试设置。该库包含一个名为 com.google.api.gax.retrying 它与重试api调用有关。
如果你看看文件, StorageOptions.Builder 继承名为 setRetrySettings() 哪个接受 RetrySettings .
您可以使用此问题中的此示例代码来使用内部重试:

RetrySettings retrySettings = RetrySettings
  .newBuilder()
  .setMaxAttempts(50)
  .setInitialRetryDelay(Duration.ofSeconds(10))
  .setRetryDelayMultiplier(1.5)
  .setMaxRetryDelay(Duration.ofSeconds(20))
  .build();
storage = StorageOptions.newBuilder().setRetrySettings(retrySettings).setCredentials(credentials).build().getService();

....

请注意问题中的以下注解:
重试机制用于处理数据传输超时、网络问题或拒绝访问问题超出其职责范围。它也不会保护您不受临时网络断开的影响。
作为附加参考,这里有一个github链接,可以查看默认的重试设置。

相关问题