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 facilitates the use of Cloud Pub/Sub services within C++ applications, offering types and functions to publish and subscribe to messages.\u003c/p\u003e\n"],["\u003cp\u003eThe library provides methods for both publishing and receiving messages, with examples including \u003ccode\u003ePublisher::Publish()\u003c/code\u003e for efficient publishing, and \u003ccode\u003eSubscriber::Subscribe()\u003c/code\u003e for asynchronously receiving messages.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation offers information on various topics, such as error handling, environment variables, and customization options for the default endpoint, authentication, and retry policies.\u003c/p\u003e\n"],["\u003cp\u003eThe library has examples for mocking, with how to test your Cloud Pub/Sub publisher and subscriber applications using \u003ccode\u003egooglemock\u003c/code\u003e, and testing \u003ccode\u003ePublisher\u003c/code\u003e and \u003ccode\u003eSubscriber\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThere is an available guide to setting up a C++ development environment to utilize the Google Cloud C++ client libraries, including the Cloud Pub/Sub C++ Client library.\u003c/p\u003e\n"]]],[],null,["Version 2.32.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.32.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.32.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.32.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.32.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.32.0/pubsub-error-handling) to learn how the library reports run-time errors.\n- [Environment Variables](/cpp/docs/reference/pubsub/2.32.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.32.0/pubsub-endpoint-example)\n- [Override the authentication configuration](/cpp/docs/reference/pubsub/2.32.0/pubsub-auth-example)\n- [Override Retry, Backoff, and Idempotency Policies](/cpp/docs/reference/pubsub/2.32.0/pubsub-override-retry)\n- [Testing your Cloud Pub/Sub publisher application with googlemock](/cpp/docs/reference/pubsub/2.32.0/publisher-mock) shows how to write tests mocking [Publisher](/cpp/docs/reference/pubsub/2.32.0/classgoogle_1_1cloud_1_1pubsub_1_1Publisher)\n- [Testing your Cloud Pub/Sub subscriber application with googlemock](/cpp/docs/reference/pubsub/2.32.0/subscriber-mock) shows how to write tests mocking [Subscriber](/cpp/docs/reference/pubsub/2.32.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."]]