This shows how to override the retry policies for ids_v1::IDSClient:
auto options =
google::cloud::Options{}
.set<google::cloud::ids_v1::IDSConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::ids_v1::IDSRetryPolicyOption>(
google::cloud::ids_v1::IDSLimitedErrorCountRetryPolicy(3).clone())
.set<google::cloud::ids_v1::IDSBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection = google::cloud::ids_v1::MakeIDSConnection(options);
// c1 and c2 share the same retry policies
auto c1 = google::cloud::ids_v1::IDSClient(connection);
auto c2 = google::cloud::ids_v1::IDSClient(connection);
// You can override any of the policies in a new client. This new client
// will share the policies from c1 (or c2) *except* for the retry policy.
auto c3 = google::cloud::ids_v1::IDSClient(
connection,
google::cloud::Options{}.set<google::cloud::ids_v1::IDSRetryPolicyOption>(
google::cloud::ids_v1::IDSLimitedTimeRetryPolicy(
std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::ids_v1::IDSRetryPolicyOption>(
// google::cloud::ids_v1::IDSLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy
: public google::cloud::ids_v1::IDSConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<google::cloud::ids_v1::IDSConnectionIdempotencyPolicy> clone()
const override {
return std::make_unique<CustomIdempotencyPolicy>(*this);
}
// Override inherited functions to define as needed.
};
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThis document provides version-specific details and instructions on overriding retry policies for \u003ccode\u003eids_v1::IDSClient\u003c/code\u003e, with the latest release being 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eThe code demonstrates how to customize retry and backoff policies using \u003ccode\u003egoogle::cloud::Options\u003c/code\u003e to set \u003ccode\u003eIDSRetryPolicyOption\u003c/code\u003e and other options, including setting a \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eMultiple clients can share the same retry policies when created with the same connection, but you can also override the policies for individual clients or specific calls as shown in the example.\u003c/p\u003e\n"],["\u003cp\u003eThe sample code illustrates how to set retry policies based on error count or time limits using \u003ccode\u003eIDSLimitedErrorCountRetryPolicy\u003c/code\u003e or \u003ccode\u003eIDSLimitedTimeRetryPolicy\u003c/code\u003e, respectively, and also how to use \u003ccode\u003eExponentialBackoffPolicy\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe code example provides a \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e class as an example of how users can create their own custom idempotency policies to be used for their implementations.\u003c/p\u003e\n"]]],[],null,[]]