This directory contains an idiomatic C++ client library for interacting with Cloud Pub/Sub, an asynchronous messaging service that decouples services that produce events from services that process events.
Please note that the Google Cloud C++ client libraries do not follow Semantic Versioning.
- Windows, macOS, Linux
- C++11 (and higher) compilers (we test with GCC >= 5.4, Clang >= 6.0, and MSVC >= 2017)
- Environments with or without exceptions
- Bazel and CMake builds
- Official documentation about the Cloud Pub/Sub service
- Reference doxygen documentation for each release of this client library
- Detailed header comments in our public
.h
files
The quickstart/ directory contains a minimal environment to get started using this client library in a larger project. The following "Hello World" program is used in this quickstart, and should give you a taste of this library.
#include "google/cloud/pubsub/publisher.h"
#include <iostream>
#include <stdexcept>
int main(int argc, char* argv[]) try {
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << " <project-id> <topic-id>\n";
return 1;
}
std::string const project_id = argv[1];
std::string const topic_id = argv[2];
// Create a namespace alias to make the code easier to read.
namespace pubsub = ::google::cloud::pubsub;
auto publisher = pubsub::Publisher(
pubsub::MakePublisherConnection(pubsub::Topic(project_id, topic_id)));
auto id =
publisher
.Publish(pubsub::MessageBuilder{}.SetData("Hello World!").Build())
.get();
if (!id) throw std::runtime_error(id.status().message());
std::cout << "Hello World published with id=" << *id << "\n";
return 0;
} catch (std::exception const& ex) {
std::cerr << "Standard exception raised: " << ex.what() << "\n";
return 1;
}
- Packaging maintainers or developers who prefer to install the library in a
fixed directory (such as
/usr/local
or/opt
) should consult the packaging guide. - Developers wanting to use the libraries as part of a larger CMake or Bazel project should consult the quickstart guides for the library or libraries they want to use.
- Developers wanting to compile the library just to run some of the examples or tests should read the current document.
- Contributors and developers to
google-cloud-cpp
should consult the guide to setup a development workstation.
Please consult the packaging guide for detailed instructions to install the Google Cloud C++ client libraries. If your project uses CMake or Bazel check the quickstart example for instructions to use this library in your project.
See CONTRIBUTING.md
for details on how to
contribute to this project, including how to build and test your changes
as well as how to properly format your code.
Apache 2.0; see LICENSE
for details.