This shows how to override the retry policies for appengine_v1::ServicesClient:
auto options =
google::cloud::Options{}
.set<google::cloud::appengine_v1::
ServicesConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::appengine_v1::ServicesRetryPolicyOption>(
google::cloud::appengine_v1::ServicesLimitedErrorCountRetryPolicy(
3)
.clone())
.set<google::cloud::appengine_v1::ServicesBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection =
google::cloud::appengine_v1::MakeServicesConnection(options);
// c1 and c2 share the same retry policies
auto c1 = google::cloud::appengine_v1::ServicesClient(connection);
auto c2 = google::cloud::appengine_v1::ServicesClient(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::appengine_v1::ServicesClient(
connection,
google::cloud::Options{}
.set<google::cloud::appengine_v1::ServicesRetryPolicyOption>(
google::cloud::appengine_v1::ServicesLimitedTimeRetryPolicy(
std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::appengine_v1::ServicesRetryPolicyOption>(
// google::cloud::appengine_v1::ServicesLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy
: public google::cloud::appengine_v1::ServicesConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<
google::cloud::appengine_v1::ServicesConnectionIdempotencyPolicy>
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\u003eThe page provides documentation for overriding retry policies for \u003ccode\u003eappengine_v1::ServicesClient\u003c/code\u003e across multiple versions, ranging from 2.11.0 to 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eYou can customize retry policies by setting options for idempotency, retry, and backoff policies, as shown with \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e, \u003ccode\u003eServicesLimitedErrorCountRetryPolicy\u003c/code\u003e, and \u003ccode\u003eExponentialBackoffPolicy\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eClients such as c1 and c2 can share the same retry policies, while new clients like c3 can have specific overrides for certain policies, such as in this case, only the \u003ccode\u003eServicesRetryPolicyOption\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe policies can also be overriden in a single RPC call as shown in the example for the class \u003ccode\u003eappengine_v1::ServicesClient\u003c/code\u003e, when calling \u003ccode\u003eSomeRpc\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["Version 2.29.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/appengine/latest/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/appengine/2.41.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/appengine/2.40.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/appengine/2.39.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/appengine/2.38.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/appengine/2.37.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/appengine/2.36.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/appengine/2.35.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/appengine/2.34.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/appengine/2.33.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/appengine/2.32.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/appengine/2.31.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/appengine/2.30.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/appengine/2.29.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/appengine/2.28.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/appengine/2.27.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/appengine/2.26.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/appengine/2.25.1/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/appengine/2.24.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/appengine/2.23.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.22.1](/cpp/docs/reference/appengine/2.22.1/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.21.0](/cpp/docs/reference/appengine/2.21.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.20.0](/cpp/docs/reference/appengine/2.20.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.19.0](/cpp/docs/reference/appengine/2.19.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.18.0](/cpp/docs/reference/appengine/2.18.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.17.0](/cpp/docs/reference/appengine/2.17.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.16.0](/cpp/docs/reference/appengine/2.16.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.15.1](/cpp/docs/reference/appengine/2.15.1/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.14.0](/cpp/docs/reference/appengine/2.14.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.13.0](/cpp/docs/reference/appengine/2.13.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.12.0](/cpp/docs/reference/appengine/2.12.0/appengine_v1_1_1ServicesClient-retry-snippet)\n- [2.11.0](/cpp/docs/reference/appengine/2.11.0/appengine_v1_1_1ServicesClient-retry-snippet) \n\nOverride appengine_v1::ServicesClient Retry Policies\n====================================================\n\nThis shows how to override the retry policies for appengine_v1::ServicesClient: \n\n auto options =\n google::cloud::Options{}\n .set\u003cgoogle::cloud::appengine_v1::\n ServicesConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::appengine_v1::ServicesRetryPolicyOption\u003e(\n google::cloud::appengine_v1::ServicesLimitedErrorCountRetryPolicy(\n 3)\n .clone())\n .set\u003cgoogle::cloud::appengine_v1::ServicesBackoffPolicyOption\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::appengine_v1::MakeServicesConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 = google::cloud::appengine_v1::ServicesClient(connection);\n auto c2 = google::cloud::appengine_v1::ServicesClient(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::appengine_v1::ServicesClient(\n connection,\n google::cloud::Options{}\n .set\u003cgoogle::cloud::appengine_v1::ServicesRetryPolicyOption\u003e(\n google::cloud::appengine_v1::ServicesLimitedTimeRetryPolicy(\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::appengine_v1::ServicesRetryPolicyOption\u003e(\n // google::cloud::appengine_v1::ServicesLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy\n : public google::cloud::appengine_v1::ServicesConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003c\n google::cloud::appengine_v1::ServicesConnectionIdempotencyPolicy\u003e\n clone() const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]