Error Handlingto learn how the library reports run-time errors.
Environment Variablesfor environment variables affecting the library. Some of these environment variables enable logging to the console. This can be an effective approach to diagnose runtime problems.
TheSetting up your development environmentguide describes how to set up a C++ development environment in various platforms, including the Google Cloud C++ client libraries.
[[["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 Cloud Pub/Sub C++ Client Library provides the necessary tools for C++ applications to interact with Cloud Pub/Sub.\u003c/p\u003e\n"],["\u003cp\u003eThis library offers various versions, ranging from 2.11.0 up to the latest release candidate, 2.37.0-rc, with version 2.35.0 being the one currently selected.\u003c/p\u003e\n"],["\u003cp\u003eYou can efficiently publish messages using \u003ccode\u003ePublisher::Publish()\u003c/code\u003e or \u003ccode\u003eBlockingPublisher::Publish()\u003c/code\u003e or receive messages asynchronously via \u003ccode\u003eSubscriber::Subscribe()\u003c/code\u003e or individually with \u003ccode\u003eSubscriber::Pull()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe library documentation includes information on error handling, environment variables, and how to override default settings such as the endpoint, authentication configuration, retry policies, backoff and idempotency.\u003c/p\u003e\n"],["\u003cp\u003eYou can write tests mocking the publisher and the subscriber using the library.\u003c/p\u003e\n"]]],[],null,["Version 2.35.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/pubsub/latest)\n- [2.41.0](/cpp/docs/reference/pubsub/2.41.0)\n- [2.40.0](/cpp/docs/reference/pubsub/2.40.0)\n- [2.39.0](/cpp/docs/reference/pubsub/2.39.0)\n- [2.38.0](/cpp/docs/reference/pubsub/2.38.0)\n- [2.37.0](/cpp/docs/reference/pubsub/2.37.0)\n- [2.36.0](/cpp/docs/reference/pubsub/2.36.0)\n- [2.35.0](/cpp/docs/reference/pubsub/2.35.0)\n- [2.34.0](/cpp/docs/reference/pubsub/2.34.0)\n- [2.33.0](/cpp/docs/reference/pubsub/2.33.0)\n- [2.32.0](/cpp/docs/reference/pubsub/2.32.0)\n- [2.31.0](/cpp/docs/reference/pubsub/2.31.0)\n- [2.30.0](/cpp/docs/reference/pubsub/2.30.0)\n- [2.29.0](/cpp/docs/reference/pubsub/2.29.0)\n- [2.28.0](/cpp/docs/reference/pubsub/2.28.0)\n- [2.27.0](/cpp/docs/reference/pubsub/2.27.0)\n- [2.26.0](/cpp/docs/reference/pubsub/2.26.0)\n- [2.25.1](/cpp/docs/reference/pubsub/2.25.1)\n- [2.24.0](/cpp/docs/reference/pubsub/2.24.0)\n- [2.23.0](/cpp/docs/reference/pubsub/2.23.0)\n- [2.22.1](/cpp/docs/reference/pubsub/2.22.1)\n- [2.21.0](/cpp/docs/reference/pubsub/2.21.0)\n- [2.20.0](/cpp/docs/reference/pubsub/2.20.0)\n- [2.19.0](/cpp/docs/reference/pubsub/2.19.0)\n- [2.18.0](/cpp/docs/reference/pubsub/2.18.0)\n- [2.17.0](/cpp/docs/reference/pubsub/2.17.0)\n- [2.16.0](/cpp/docs/reference/pubsub/2.16.0)\n- [2.15.1](/cpp/docs/reference/pubsub/2.15.1)\n- [2.14.0](/cpp/docs/reference/pubsub/2.14.0)\n- [2.13.0](/cpp/docs/reference/pubsub/2.13.0)\n- [2.12.0](/cpp/docs/reference/pubsub/2.12.0)\n- [2.11.0](/cpp/docs/reference/pubsub/2.11.0) \n\nCloud Pub/Sub C++ Client Library\n================================\n\nThe Cloud Pub/Sub C++ Client library offers types and functions to use Cloud Pub/Sub from C++ applications.\n\n### Quickstart\n\nThe following \"Hello World\" program should give you a sense of how to use the library. \n\n #include \"google/cloud/pubsub/publisher.h\"\n #include \u003ciostream\u003e\n\n int main(int argc, char* argv[]) try {\n if (argc != 3) {\n std::cerr \u003c\u003c \"Usage: \" \u003c\u003c argv[0] \u003c\u003c \" \u003cproject-id\u003e \u003ctopic-id\u003e\\n\";\n return 1;\n }\n\n std::string const project_id = argv[1];\n std::string const topic_id = argv[2];\n\n // Create a namespace alias to make the code easier to read.\n namespace pubsub = ::google::cloud::pubsub;\n\n auto publisher = pubsub::Publisher(\n pubsub::MakePublisherConnection(pubsub::Topic(project_id, topic_id)));\n auto id =\n publisher\n .Publish(pubsub::MessageBuilder{}.SetData(\"Hello World!\").Build())\n .get();\n if (!id) throw std::move(id).status();\n std::cout \u003c\u003c \"Hello World published with id=\" \u003c\u003c *id \u003c\u003c \"\\n\";\n\n return 0;\n } catch (google::cloud::Status const& status) {\n std::cerr \u003c\u003c \"google::cloud::Status thrown: \" \u003c\u003c status \u003c\u003c \"\\n\";\n return 1;\n }\n\n### More Information\n\n- [`Publisher::Publish()`](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1Publisher#classgoogle_1_1cloud_1_1pubsub_1_1Publisher_1adcaba4f8339e31d6d296eab026164a4a) - to efficiently publish Pub/Sub messages.\n- [`BlockingPublisher::Publish()`](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1BlockingPublisher#classgoogle_1_1cloud_1_1pubsub_1_1BlockingPublisher_1a37e3aae927a3fb1fa2e83f1663d621a1) - to publish a single Pub/Sub messages.\n- [`Subscriber::Subscribe()`](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber#classgoogle_1_1cloud_1_1pubsub_1_1Subscriber_1a5d9951d7bb77a77943712dc788498977) - to asynchronous receive Pub/Sub messages.\n- [`Subscriber::Pull()`](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber#classgoogle_1_1cloud_1_1pubsub_1_1Subscriber_1ad0707c03975538e0b2ec564cfd6ee17e) - to receive a single Pub/Sub messages.\n- [Error Handling](/cpp/docs/reference/pubsub/2.35.0/pubsub-error-handling) to learn how the library reports run-time errors.\n- [Environment Variables](/cpp/docs/reference/pubsub/2.35.0/pubsub-env) for environment variables affecting the library. Some of these environment variables enable logging to the console. This can be an effective approach to diagnose runtime problems.\n- [Override the default endpoint](/cpp/docs/reference/pubsub/2.35.0/pubsub-endpoint-example)\n- [Override the authentication configuration](/cpp/docs/reference/pubsub/2.35.0/pubsub-auth-example)\n- [Override Retry, Backoff, and Idempotency Policies](/cpp/docs/reference/pubsub/2.35.0/pubsub-override-retry)\n- [Testing your Cloud Pub/Sub publisher application with googlemock](/cpp/docs/reference/pubsub/2.35.0/publisher-mock) shows how to write tests mocking [Publisher](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1Publisher)\n- [Testing your Cloud Pub/Sub subscriber application with googlemock](/cpp/docs/reference/pubsub/2.35.0/subscriber-mock) shows how to write tests mocking [Subscriber](/cpp/docs/reference/pubsub/2.35.0/classgoogle_1_1cloud_1_1pubsub_1_1Subscriber)\n- The [Setting up your development environment](https://cloud.google.com/cpp/docs/setup) guide describes how to set up a C++ development environment in various platforms, including the Google Cloud C++ client libraries."]]