Skip to main content
Version: Next

Pulsar C++ client

You can use a Pulsar C++ client to create Pulsar producers, consumers, and readers in C++. All the methods in Pulsar C++ clients are thread-safe.

Get started

  1. Set up C++ client library
  2. Initialize a C++ client
  3. Use a C++ client

What's next?

Reference doc

Changes for 3.0.0 and later versions

The new version of the Pulsar C++ client starts from 3.0.0 and has been no longer consistent with Pulsar since 2.10.x. For the latest releases, see the Download page.

Take the 3.0.0 release for example, there are following subdirectories:

  • apk-arm64: the Alpine Linux packages for ARM64 architectures
  • apk-x86_64: the Alpine Linux packages for x64 architectures
  • deb-arm64: the Debian-based Linux packages for ARM64 architectures
  • deb-x86_64: the Debian-based Linux packages for x64 architectures
  • rpm-arm64: the RedHat-based Linux packages for ARM64 architectures
  • rpm-x86_64: the RedHat-based Linux packages for x64 architectures

These Linux packages above all contain the C++ headers installed under /usr/include and the following libraries installed under /usr/lib:

  • libpulsar.so: the shared library that links 3rd party dependencies statically
  • libpulsar.a: the static library
  • libpulsarwithdeps.a: the fat static library that includes all 3rd party dependencies

Here is an example to link these libraries for a C++ source file named main.cc:

# Link to libpulsar.so
g++ -std=c++11 main.cc -lpulsar
# Link to libpulsarwithdeps.a
g++ -std=c++11 main.cc /usr/lib/libpulsarwithdeps.a -lpthread -ldl
# Link to libpulsar.a
g++ -std=c++11 main.cc /usr/lib/libpulsar.a \
-lprotobuf -lcurl -lssl -lcrypto -lz -lzstd -lsnappy -lpthread -ldl
caution

Linking to libpulsar.a can be difficult for beginners because the 3rd party dependencies must be compatible. For example, the protobuf version must be 3.20.0 or higher for Pulsar C++ client 3.0.0. It's better to link to libpulsarwithdeps.a instead.

danger

Before 3.0.0, there was a libpulsarnossl.so, which is removed now.