Skip to content

Commit

Permalink
[improve][doc] Add documents for C++ client 3.0.0 or later (apache#18574
Browse files Browse the repository at this point in the history
)

Co-authored-by: tison <[email protected]>
Co-authored-by: momo-jun <[email protected]>
  • Loading branch information
3 people authored and lifepuzzlefun committed Jan 10, 2023
1 parent d1a430c commit c43c55f
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion site2/docs/client-libraries-cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,47 @@ import TabItem from '@theme/TabItem';

You can use a Pulsar C++ client to create producers, consumers, and readers. For Pulsar features that C++ clients support, see [Client Feature Matrix](https://docs.google.com/spreadsheets/d/1YHYTkIXR8-Ql103u-IMI18TXLlGStK8uJjDsOOA0T20/edit#gid=1784579914). For complete examples, refer to [C++ client examples](https://github.com/apache/pulsar-client-cpp/tree/main/examples).

## Changes for version 3.0.0 or later

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](/download/) page.

Take the [3.0.0 release](https://archive.apache.org/dist/pulsar/pulsar-client-cpp-3.0.0/) 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`:

```bash
# 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.

:::

## Installation

Use one of the following methods to install a Pulsar C++ client.
Expand Down Expand Up @@ -104,6 +145,12 @@ If you get an error like "libpulsar.so: cannot open shared object file: No such

:::

### APK

```bash
apk add --allow-untrusted ./apache-pulsar-client-*.apk
```

## Connection URLs

To connect to Pulsar using client libraries, you need to specify a [Pulsar protocol](developing-binary-protocol.md) URL.
Expand Down Expand Up @@ -398,4 +445,4 @@ client.subscribe("my-topic", "my-sub", conf, consumer);

## Schema

To work with [Pulsar schema](schema-overview.md) using C++ clients, see [Schema - Get started](schema-get-started.md). For specific schema types that C++ clients support, see [code](https://github.com/apache/pulsar-client-cpp/blob/main/include/pulsar/Schema.h).
To work with [Pulsar schema](schema-overview.md) using C++ clients, see [Schema - Get started](schema-get-started.md). For specific schema types that C++ clients support, see [code](https://github.com/apache/pulsar-client-cpp/blob/main/include/pulsar/Schema.h).

0 comments on commit c43c55f

Please sign in to comment.