The Pulsar C++ client
Welcome to the Doxygen documentation for Pulsar.
Supported platforms
The Pulsar C++ client has been successfully tested on MacOS and Linux.
System requirements
You need to have the following installed to use the C++ client:
Compilation
There are separate compilation instructions for MacOS and Linux. For both systems, start by cloning the Pulsar repository:
1 $ git clone https://github.com/apache/pulsar
Linux
First, install all of the necessary dependencies:
1 $ apt-get install cmake libssl-dev libcurl4-openssl-dev liblog4cxx-dev \
2 libprotobuf-dev libboost-all-dev libgtest-dev libjsoncpp-dev
Then compile and install Google Test:
1 $ git clone https://github.com/google/googletest.git && cd googletest
Finally, compile the Pulsar client library for C++ inside the Pulsar repo:
The resulting files, libpulsar.so
and libpulsar.a
, will be placed in the lib
folder of the repo while two tools, perfProducer
and perfConsumer
, will be placed in the perf
directory.
MacOS
First, install all of the necessary dependencies:
3 $ export OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/
4 $ export OPENSSL_ROOT_DIR=/usr/local/opt/openssl/
6 # Protocol Buffers installation
7 $ brew tap homebrew/versions
8 $ brew install protobuf260
10 $ brew install log4cxx
12 # Google Test installation
13 $ git clone https://github.com/google/googletest.git
Then compile the Pulsar client library in the repo that you cloned:
Consumer
Client client("pulsar://localhost:6650");
Consumer consumer;
Result result = client.subscribe(
"persistent://sample/standalone/ns1/my-topic",
"my-subscribtion-name", consumer);
if (result != ResultOk) {
LOG_ERROR("Failed to subscribe: " << result);
return -1;
}
Message msg;
while (true) {
consumer.receive(msg);
LOG_INFO("Received: " << msg << " with payload '" << msg.getDataAsString() << "'");
consumer.acknowledge(msg);
}
client.close();
Producer
Client client("pulsar://localhost:6650");
Producer producer;
Result result = client.createProducer(
"persistent://sample/standalone/ns1/my-topic", producer);
if (result != ResultOk) {
LOG_ERROR("Error creating producer: " << result);
return -1;
}
for(int i=0;i<10;i++){
Message msg = MessageBuilder().setContent("my-message").build();
Result res = producer.send(msg);
LOG_INFO("Message sent: " << res);
}
client.close();
Authentication
ClientConfiguration config = ClientConfiguration();
config.setUseTls(true);
std::string certfile = "/path/to/cacert.pem";
ParamMap params;
params["tlsCertFile"] = "/path/to/client-cert.pem";
params["tlsKeyFile"] = "/path/to/client-key.pem";
config.setTlsTrustCertsFilePath(certfile);
config.setTlsAllowInsecureConnection(false);
config.setAuth(auth);
Client client("pulsar+ssl://my-broker.com:6651",config);
Code formatting
After you changed code, run auto-formatting by the following command.
You need to have the following installed to use the auto-formatting.