Apache Pulsar C++ client library

Clone this repo:
  1. a42261b Fix flaky testConsumerEventWithoutPartition cause by the change of Pulsar 3.0 (#281) by Yunze Xu · 13 hours ago main
  2. 413461a [docs] Fix the developer guide for macOS users (#279) by Yunze Xu · 2 days ago
  3. d883c60 add cmake-build-debug dir to gitignore (#275) by ZhangJian He · 7 days ago
  4. 0ab478a [consumer] Support parse broker metadata (#276) by ZhangJian He · 7 days ago
  5. 4209987 [improve] AuthAthenz supports Copper Argos (#274) by shustsud · 9 days ago

Pulsar C++ client library

Pulsar C++ clients support a variety of Pulsar features to enable building applications connecting to your Pulsar cluster.

For the supported Pulsar features, see Client Feature Matrix.

For how to use APIs to publish and consume messages, see examples.

Generate the API documents

Pulsar C++ client uses doxygen to build API documents. After installing doxygen, you only need to run doxygen to generate the API documents whose main page is under the doxygen/html/index.html path.


The default supported compression types are:

  • CompressionNone
  • CompressionLZ4

If you want to enable other compression types, you need to install:

If you want to build and run the tests, you need to install GTest. Otherwise, you need to add CMake option -DBUILD_TESTS=OFF.

If you want to use ClientConfiguration::setLogConfFilePath, you need to install the Log4CXX and add CMake option -DUSE_LOG4CXX=ON.

The dependencies.yaml file provides the recommended dependency versions, while you can still build from source with other dependency versions. If a dependency requires a higher C++ standard, e.g. C++14, you can specify the standard like:



Pulsar C++ Client Library has been tested on:

  • Linux
  • Mac OS X
  • Windows x64



First of all, clone the source code:

git clone https://github.com/apache/pulsar-client-cpp
cd pulsar-client-cpp

Compile on Ubuntu

Install all dependencies:

sudo apt-get update -y && sudo apt-get install -y g++ cmake libssl-dev libcurl4-openssl-dev \
                libprotobuf-dev libboost-all-dev libgtest-dev libgmock-dev \

Compile Pulsar client library:

cmake .

If you want to build performance tools, you need to run:



Client library will be placed in:


Examples will be placed in:


Tools will be placed in:


Compile on Mac OS X

Install all dependencies:

brew install cmake openssl protobuf boost googletest zstd snappy

Compile Pulsar client library:


You need to configure CMAKE_CXX_STANDARD with 14 because the latest googletest dependency from HomeBrew requires the C++14 support. If you don't want to build tests, you can run:


If you want to build performance tools, you need to run:



Client library will be placed in:


Examples will be placed in:


Tools will be placed in:


Compile on Windows

Install with vcpkg

It‘s highly recommended to use vcpkg for C++ package management on Windows. It’s easy to install and well supported by Visual Studio (2015/2017/2019) and CMake. See here for quick start.

Take Windows 64-bit library as an example, you only need to run

vcpkg install --feature-flags=manifests --triplet x64-windows


For Windows 32-bit library, change x64-windows to x86-windows, see here for more details about the triplet concept in Vcpkg.

The all dependencies, which are specified by vcpkg.json, will be installed in vcpkg_installed/ subdirectory,

With vcpkg, you only need to run two commands:

cmake \
 -B ./build \
 -A x64 \
 -DVCPKG_TRIPLET=x64-windows \
 -S .
cmake --build ./build --config Release

Then all artifacts will be built into build subdirectory.


  1. For Windows 32-bit, you need to use -A Win32 and -DVCPKG_TRIPLET=x86-windows.
  2. For MSVC Debug mode, you need to replace Release with Debug for both CMAKE_BUILD_TYPE variable and --config option.

Install dependencies manually

You need to install dlfcn-win32 in addition.

If you installed the dependencies manually, you need to run

#If all dependencies are in your path, all that is necessary is
cmake .

#if all dependencies are not in your path, then passing in a PROTOC_PATH and CMAKE_PREFIX_PATH is necessary
cmake -DPROTOC_PATH=C:/protobuf/bin/protoc -DCMAKE_PREFIX_PATH="C:/boost;C:/openssl;C:/zlib;C:/curl;C:/protobuf;C:/googletest;C:/dlfcn-win32" .

#This will generate pulsar-cpp.sln. Open this in Visual Studio and build the desired configurations.


Client library will be placed in:



Add Windows environment paths:


Examples will be available in:



# Execution
# Start standalone broker

# Run the tests
cd tests

# When no longer needed, stop standalone broker

Wireshark Dissector

See the wireshark directory for details.

Requirements for Contributors

It's required to install LLVM for clang-tidy and clang-format. Pulsar C++ client use clang-format 11 to format files. make format automatically formats the files.

For Ubuntu users, you can install clang-format-11 via apt install clang-format-11. For other users, run ./build-support/docker-format.sh if you have Docker installed.

We welcome contributions from the open source community, kindly make sure your changes are backward compatible with GCC 4.8 and Boost 1.53.

If your contribution adds Pulsar features for C++ clients, you need to update both the Pulsar docs and the Client Feature Matrix. See Contribution Guide for more details.