This shows how to override the retry policies for contentwarehouse_v1::RuleSetServiceClient:
auto options = google::cloud::Options{}
.set<google::cloud::contentwarehouse_v1::
RuleSetServiceConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::contentwarehouse_v1::
RuleSetServiceRetryPolicyOption>(
google::cloud::contentwarehouse_v1::
RuleSetServiceLimitedErrorCountRetryPolicy(3)
.clone())
.set<google::cloud::contentwarehouse_v1::
RuleSetServiceBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection =
google::cloud::contentwarehouse_v1::MakeRuleSetServiceConnection(options);
// c1 and c2 share the same retry policies
auto c1 =
google::cloud::contentwarehouse_v1::RuleSetServiceClient(connection);
auto c2 =
google::cloud::contentwarehouse_v1::RuleSetServiceClient(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::contentwarehouse_v1::RuleSetServiceClient(
connection,
google::cloud::Options{}
.set<google::cloud::contentwarehouse_v1::
RuleSetServiceRetryPolicyOption>(
google::cloud::contentwarehouse_v1::
RuleSetServiceLimitedTimeRetryPolicy(std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::contentwarehouse_v1::RuleSetServiceRetryPolicyOption>(
// google::cloud::contentwarehouse_v1::RuleSetServiceLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy : public google::cloud::contentwarehouse_v1::
RuleSetServiceConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<google::cloud::contentwarehouse_v1::
RuleSetServiceConnectionIdempotencyPolicy>
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 details how to override retry policies for \u003ccode\u003econtentwarehouse_v1::RuleSetServiceClient\u003c/code\u003e in various versions, starting from version 2.12.0 to the latest release candidate 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eYou can modify the retry behavior by setting options for \u003ccode\u003eRuleSetServiceConnectionIdempotencyPolicyOption\u003c/code\u003e, \u003ccode\u003eRuleSetServiceRetryPolicyOption\u003c/code\u003e, and \u003ccode\u003eRuleSetServiceBackoffPolicyOption\u003c/code\u003e, demonstrating this through example code snippets.\u003c/p\u003e\n"],["\u003cp\u003eThe code shows how to apply custom retry policies to multiple client instances that will share the same retry policies, and further customize specific policies for new clients or individual calls.\u003c/p\u003e\n"],["\u003cp\u003eThe document also explains how to create a \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e class to define tailored idempotency behavior, along with how it will be implemented.\u003c/p\u003e\n"],["\u003cp\u003eThe webpage provides links to documentation for each version of \u003ccode\u003econtentwarehouse_v1::RuleSetServiceClient\u003c/code\u003e listed, enabling version-specific reference.\u003c/p\u003e\n"]]],[],null,["Version 2.35.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/contentwarehouse/latest/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/contentwarehouse/2.41.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/contentwarehouse/2.40.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/contentwarehouse/2.39.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/contentwarehouse/2.38.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/contentwarehouse/2.37.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/contentwarehouse/2.36.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/contentwarehouse/2.35.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/contentwarehouse/2.34.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/contentwarehouse/2.33.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/contentwarehouse/2.32.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/contentwarehouse/2.31.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/contentwarehouse/2.30.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/contentwarehouse/2.29.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/contentwarehouse/2.28.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/contentwarehouse/2.27.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/contentwarehouse/2.26.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/contentwarehouse/2.25.1/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/contentwarehouse/2.24.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/contentwarehouse/2.23.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.22.1](/cpp/docs/reference/contentwarehouse/2.22.1/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.21.0](/cpp/docs/reference/contentwarehouse/2.21.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.20.0](/cpp/docs/reference/contentwarehouse/2.20.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.19.0](/cpp/docs/reference/contentwarehouse/2.19.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.18.0](/cpp/docs/reference/contentwarehouse/2.18.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.17.0](/cpp/docs/reference/contentwarehouse/2.17.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.16.0](/cpp/docs/reference/contentwarehouse/2.16.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.15.1](/cpp/docs/reference/contentwarehouse/2.15.1/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.14.0](/cpp/docs/reference/contentwarehouse/2.14.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.13.0](/cpp/docs/reference/contentwarehouse/2.13.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet)\n- [2.12.0](/cpp/docs/reference/contentwarehouse/2.12.0/contentwarehouse_v1_1_1RuleSetServiceClient-retry-snippet) \n\nOverride contentwarehouse_v1::RuleSetServiceClient Retry Policies\n=================================================================\n\nThis shows how to override the retry policies for contentwarehouse_v1::RuleSetServiceClient: \n\n auto options = google::cloud::Options{}\n .set\u003cgoogle::cloud::contentwarehouse_v1::\n RuleSetServiceConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::contentwarehouse_v1::\n RuleSetServiceRetryPolicyOption\u003e(\n google::cloud::contentwarehouse_v1::\n RuleSetServiceLimitedErrorCountRetryPolicy(3)\n .clone())\n .set\u003cgoogle::cloud::contentwarehouse_v1::\n RuleSetServiceBackoffPolicyOption\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 =\n google::cloud::contentwarehouse_v1::MakeRuleSetServiceConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 =\n google::cloud::contentwarehouse_v1::RuleSetServiceClient(connection);\n auto c2 =\n google::cloud::contentwarehouse_v1::RuleSetServiceClient(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::contentwarehouse_v1::RuleSetServiceClient(\n connection,\n google::cloud::Options{}\n .set\u003cgoogle::cloud::contentwarehouse_v1::\n RuleSetServiceRetryPolicyOption\u003e(\n google::cloud::contentwarehouse_v1::\n RuleSetServiceLimitedTimeRetryPolicy(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::contentwarehouse_v1::RuleSetServiceRetryPolicyOption\u003e(\n // google::cloud::contentwarehouse_v1::RuleSetServiceLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy : public google::cloud::contentwarehouse_v1::\n RuleSetServiceConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003cgoogle::cloud::contentwarehouse_v1::\n RuleSetServiceConnectionIdempotencyPolicy\u003e\n clone() const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]