This shows how to override the retry policies for apphub_v1::AppHubClient:
auto options =
google::cloud::Options{}
.set<google::cloud::apphub_v1::
AppHubConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::apphub_v1::AppHubRetryPolicyOption>(
google::cloud::apphub_v1::AppHubLimitedErrorCountRetryPolicy(3)
.clone())
.set<google::cloud::apphub_v1::AppHubBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection = google::cloud::apphub_v1::MakeAppHubConnection(options);
// c1 and c2 share the same retry policies
auto c1 = google::cloud::apphub_v1::AppHubClient(connection);
auto c2 = google::cloud::apphub_v1::AppHubClient(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::apphub_v1::AppHubClient(
connection,
google::cloud::Options{}
.set<google::cloud::apphub_v1::AppHubRetryPolicyOption>(
google::cloud::apphub_v1::AppHubLimitedTimeRetryPolicy(
std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::apphub_v1::AppHubRetryPolicyOption>(
// google::cloud::apphub_v1::AppHubLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy
: public google::cloud::apphub_v1::AppHubConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<google::cloud::apphub_v1::AppHubConnectionIdempotencyPolicy>
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\u003eThe content provides documentation for various versions of the \u003ccode\u003eapphub_v1::AppHubClient\u003c/code\u003e, ranging from version 2.23.0 up to the latest release candidate 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eThe primary focus is on demonstrating how to override the retry policies for \u003ccode\u003eapphub_v1::AppHubClient\u003c/code\u003e, including setting custom idempotency, retry, and backoff policies.\u003c/p\u003e\n"],["\u003cp\u003eClients created from the same connection will initially share the same retry policies, but these policies can be overridden in new clients or even for single RPC calls, as shown in the c3 example.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation includes an example of creating a \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e class for customizing the idempotency behavior of the \u003ccode\u003eapphub_v1::AppHubClient\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eEach version available has a link to the documentation showing retry snippets.\u003c/p\u003e\n"]]],[],null,["Version 2.28.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/apphub/latest/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/apphub/2.41.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/apphub/2.40.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/apphub/2.39.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/apphub/2.38.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/apphub/2.37.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/apphub/2.36.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/apphub/2.35.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/apphub/2.34.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/apphub/2.33.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/apphub/2.32.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/apphub/2.31.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/apphub/2.30.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/apphub/2.29.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/apphub/2.28.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/apphub/2.27.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/apphub/2.26.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/apphub/2.25.1/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/apphub/2.24.0/apphub_v1_1_1AppHubClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/apphub/2.23.0/apphub_v1_1_1AppHubClient-retry-snippet) \n\nOverride apphub_v1::AppHubClient Retry Policies\n===============================================\n\nThis shows how to override the retry policies for apphub_v1::AppHubClient: \n\n auto options =\n google::cloud::Options{}\n .set\u003cgoogle::cloud::apphub_v1::\n AppHubConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::apphub_v1::AppHubRetryPolicyOption\u003e(\n google::cloud::apphub_v1::AppHubLimitedErrorCountRetryPolicy(3)\n .clone())\n .set\u003cgoogle::cloud::apphub_v1::AppHubBackoffPolicyOption\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::apphub_v1::MakeAppHubConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 = google::cloud::apphub_v1::AppHubClient(connection);\n auto c2 = google::cloud::apphub_v1::AppHubClient(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::apphub_v1::AppHubClient(\n connection,\n google::cloud::Options{}\n .set\u003cgoogle::cloud::apphub_v1::AppHubRetryPolicyOption\u003e(\n google::cloud::apphub_v1::AppHubLimitedTimeRetryPolicy(\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::apphub_v1::AppHubRetryPolicyOption\u003e(\n // google::cloud::apphub_v1::AppHubLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy\n : public google::cloud::apphub_v1::AppHubConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003cgoogle::cloud::apphub_v1::AppHubConnectionIdempotencyPolicy\u003e\n clone() const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]