tag | f040c1ca86586953b9cf0e574a8c2add2bac9fb0 | |
---|---|---|
tagger | Matteo Merli <mmerli@apache.org> | Tue Oct 11 12:48:04 2022 -0700 |
object | 1eb861f78f31a484bceb0f64ca1ff809b61eff06 |
Release v3.0.0-candidate-1
commit | 1eb861f78f31a484bceb0f64ca1ff809b61eff06 | [log] [tgz] |
---|---|---|
author | Matteo Merli <mmerli@apache.org> | Tue Oct 11 11:33:49 2022 -0700 |
committer | Matteo Merli <mmerli@apache.org> | Tue Oct 11 12:47:24 2022 -0700 |
tree | e3e39b8a7ea6e6e02351cb301c4c8187092b7e8b | |
parent | ec5e6d98633506989ceee7c4faca7034bd86c7f4 [diff] |
Use Alpine 3.12 to build APKs (#39)
Examples for using the API to publish and consume messages can be found on https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/examples
It‘s recommended to use Protocol Buffer 2.6 because it’s verified by CI, but 3.x also works.
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 don't want to build Python client since boost-python
may not be easy to install, you need to add CMake option -DBUILD_PYTHON_WRAPPER=OFF
.
If you want to use ClientConfiguration::setLogConfFilePath
, you need to install the Log4CXX and add CMake option -DUSE_LOG4CXX=ON
.
Pulsar C++ Client Library has been tested on:
You can compile the C++ client library within a Docker container that already contains all the required dependencies.
./docker-build.sh
Run unit tests:
./docker-tests.sh
apt-get install -y g++ cmake libssl-dev libcurl4-openssl-dev \ libprotobuf-dev libboost-all-dev libgtest-dev google-mock \ protobuf-compiler
cd /usr/src/gtest sudo cmake . sudo make # Copy the libraries you just built to the OS library path. sudo cp lib/*.a /usr/lib
cd /usr/src/gmock sudo cmake . sudo make # Copy the gmock headers to the OS include path. sudo cp -r include/gmock /usr/include/ # Copy the libraries you just built to the OS brary path. sudo cp lib/*.a /usr/lib
cd pulsar-client-cpp cmake . make
lib/libpulsar.so lib/libpulsar.a
perf/perfProducer perf/perfConsumer
# For openSSL brew install openssl export OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/ export OPENSSL_ROOT_DIR=/usr/local/opt/openssl/ # For Protobuf brew install protobuf boost boost-python log4cxx jsoncpp // If you are using python3, you need to install boost-python3 # For GoogleTest brew install googletest
cd pulsar-client-cpp/ cmake . make
lib/libpulsar.dylib lib/libpulsar.a
perf/perfProducer perf/perfConsumer
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
NOTE: For Windows 32-bit library, change
x64-windows
tox86-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 \ -DBUILD_PYTHON_WRAPPER=OFF -DBUILD_TESTS=OFF \ -DVCPKG_TRIPLET=x64-windows \ -DCMAKE_BUILD_TYPE=Release \ -S . cmake --build ./build --config Release
Then all artifacts will be built into build
subdirectory.
NOTE
- For Windows 32-bit, you need to use
-A Win32
and-DVCPKG_TRIPLET=x86-windows
.- For MSVC Debug mode, you need to replace
Release
withDebug
for bothCMAKE_BUILD_TYPE
variable and--config
option.
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 pulsar-client-cpp/cmake . #if all dependencies are not in your path, then passing in a PROTOC_PATH and CMAKE_PREFIX_PATH is necessary pulsar-client-cpp/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.
pulsar-client-cpp/build/lib/Release/pulsar.lib pulsar-client-cpp/build/lib/Release/pulsar.dll
pulsar-client-cpp/build/lib/Release pulsar-client-cpp/vcpkg_installed
pulsar-client-cpp/build/examples/Release
# Source code pulsar-client-cpp/tests/ # Execution # Start standalone broker pulsar-test-service-start.sh # Run the tests pulsar-client-cpp/tests/main # When no longer needed, stop standalone broker pulsar-test-service-stop.sh
It's required to install LLVM for clang-tidy
and clang-format
. Pulsar C++ client use clang-format
6.0+ to format files. make format
automatically formats the files.
Use pulsar-client-cpp/docker-format.sh
to ensure the C++ sources are correctly formatted.
We welcome contributions from the open source community, kindly make sure your changes are backward compatible with GCC 4.8 and Boost 1.53.