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"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis document provides version information for the IDS client, with version 2.37.0-rc being the latest release candidate and version 2.15.1 being the base version.\u003c/p\u003e\n"],["\u003cp\u003eIt explains how to override default retry policies for \u003ccode\u003eids_v1::IDSClient\u003c/code\u003e using \u003ccode\u003egoogle::cloud::Options\u003c/code\u003e to set custom retry, backoff, and idempotency policies.\u003c/p\u003e\n"],["\u003cp\u003eThe document demonstrates that multiple clients can share the same connection and retry policies, while also providing examples of how to override these policies in new clients or even within individual RPC calls.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e class is shown as an example for creating and overriding custom idempotency policies for IDS client operations.\u003c/p\u003e\n"]]],[],null,["Version 2.15.1keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/ids/latest/ids_v1_1_1IDSClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/ids/2.41.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/ids/2.40.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/ids/2.39.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/ids/2.38.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/ids/2.37.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/ids/2.36.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/ids/2.35.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/ids/2.34.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/ids/2.33.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/ids/2.32.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/ids/2.31.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/ids/2.30.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/ids/2.29.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/ids/2.28.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/ids/2.27.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/ids/2.26.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/ids/2.25.1/ids_v1_1_1IDSClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/ids/2.24.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/ids/2.23.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.22.1](/cpp/docs/reference/ids/2.22.1/ids_v1_1_1IDSClient-retry-snippet)\n- [2.21.0](/cpp/docs/reference/ids/2.21.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.20.0](/cpp/docs/reference/ids/2.20.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.19.0](/cpp/docs/reference/ids/2.19.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.18.0](/cpp/docs/reference/ids/2.18.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.17.0](/cpp/docs/reference/ids/2.17.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.16.0](/cpp/docs/reference/ids/2.16.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.15.1](/cpp/docs/reference/ids/2.15.1/ids_v1_1_1IDSClient-retry-snippet)\n- [2.14.0](/cpp/docs/reference/ids/2.14.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.13.0](/cpp/docs/reference/ids/2.13.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.12.0](/cpp/docs/reference/ids/2.12.0/ids_v1_1_1IDSClient-retry-snippet)\n- [2.11.0](/cpp/docs/reference/ids/2.11.0/ids_v1_1_1IDSClient-retry-snippet) \n\nOverride ids_v1::IDSClient Retry Policies\n=========================================\n\nThis shows how to override the retry policies for ids_v1::IDSClient: \n\n auto options =\n google::cloud::Options{}\n .set\u003cgoogle::cloud::ids_v1::IDSConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::ids_v1::IDSRetryPolicyOption\u003e(\n google::cloud::ids_v1::IDSLimitedErrorCountRetryPolicy(3).clone())\n .set\u003cgoogle::cloud::ids_v1::IDSBackoffPolicyOption\u003e(\n google::cloud::ExponentialBackoffPolicy(\n /*initial_delay=*/std::chrono::milliseconds(200),\n /*maximum_delay=*/std::chrono::seconds(45),\n /*scaling=*/2.0)\n .clone());\n auto connection = google::cloud::ids_v1::MakeIDSConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 = google::cloud::ids_v1::IDSClient(connection);\n auto c2 = google::cloud::ids_v1::IDSClient(connection);\n\n // You can override any of the policies in a new client. This new client\n // will share the policies from c1 (or c2) *except* for the retry policy.\n auto c3 = google::cloud::ids_v1::IDSClient(\n connection,\n google::cloud::Options{}.set\u003cgoogle::cloud::ids_v1::IDSRetryPolicyOption\u003e(\n google::cloud::ids_v1::IDSLimitedTimeRetryPolicy(\n std::chrono::minutes(5))\n .clone()));\n\n // You can also override the policies in a single call:\n // c3.SomeRpc(..., google::cloud::Options{}\n // .set\u003cgoogle::cloud::ids_v1::IDSRetryPolicyOption\u003e(\n // google::cloud::ids_v1::IDSLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy\n : public google::cloud::ids_v1::IDSConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003cgoogle::cloud::ids_v1::IDSConnectionIdempotencyPolicy\u003e clone()\n const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]