Override batch_v1::BatchServiceClient Retry Policies

This shows how to override the retry policies for batch_v1::BatchServiceClient:

 auto options =
 google::cloud::Options{}
 .set<google::cloud::batch_v1::
 BatchServiceConnectionIdempotencyPolicyOption>(
 CustomIdempotencyPolicy().clone())
 .set<google::cloud::batch_v1::BatchServiceRetryPolicyOption>(
 google::cloud::batch_v1::BatchServiceLimitedErrorCountRetryPolicy(
 3)
 .clone())
 .set<google::cloud::batch_v1::BatchServiceBackoffPolicyOption>(
 google::cloud::ExponentialBackoffPolicy(
 /*initial_delay=*/std::chrono::milliseconds(200),
 /*maximum_delay=*/std::chrono::seconds(45),
 /*scaling=*/2.0)
 .clone());
 auto connection =
 google::cloud::batch_v1::MakeBatchServiceConnection(options);
 // c1 and c2 share the same retry policies
 auto c1 = google::cloud::batch_v1::BatchServiceClient(connection);
 auto c2 = google::cloud::batch_v1::BatchServiceClient(connection);
 // You can override any of the policies in a new client. This new client
 // will share the policies from c1 (or c2) *except* from the retry policy.
 auto c3 = google::cloud::batch_v1::BatchServiceClient(
 connection,
 google::cloud::Options{}
 .set<google::cloud::batch_v1::BatchServiceRetryPolicyOption>(
 google::cloud::batch_v1::BatchServiceLimitedTimeRetryPolicy(
 std::chrono::minutes(5))
 .clone()));
 // You can also override the policies in a single call:
 // c3.SomeRpc(..., google::cloud::Options{}
 // .set<google::cloud::batch_v1::BatchServiceRetryPolicyOption>(
 // google::cloud::batch_v1::BatchServiceLimitedErrorCountRetryPolicy(10).clone()));

Assuming you have created a custom idempotency policy. Such as:

class CustomIdempotencyPolicy
 : public google::cloud::batch_v1::BatchServiceConnectionIdempotencyPolicy {
 public:
 ~CustomIdempotencyPolicy() override = default;
 std::unique_ptr<
 google::cloud::batch_v1::BatchServiceConnectionIdempotencyPolicy>
 clone() const override {
 return std::make_unique<CustomIdempotencyPolicy>(*this);
 }
 // Override inherited functions to define as needed.
};

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年10月30日 UTC.