Skip to main content

Pulsar client libraries

Language-specific client libraries

Pulsar supports the following language-specific client libraries:

LanguageUser docAPI docRelease notesCode repo
JavaUser docAPI docNotesgithub.com/apache/pulsar/tree/master/pulsar-client
Java (Reactive Streams)User docAPI docNotesgithub.com/apache/pulsar-client-reactive
C++User docAPI docNotesgithub.com/apache/pulsar-client-cpp
PythonUser docAPI docNotesgithub.com/apache/pulsar-client-python
Go clientUser docAPI docNotesgithub.com/apache/pulsar-client-go
Node.jsUser docNotesgithub.com/apache/pulsar-client-node
C#/DotPulsarUser docNotesgithub.com/apache/pulsar-dotpulsar
tip

If you want to create your own client library, read the binary protocol documentation.

Language-agnostic client libraries

Pulsar supports the following language-agnostic client libraries:

InterfaceDocumentationRelease noteCode repo
RESTUser docNotesgithub.com/apache/pulsar/tree/master/pulsar-broker
WebSocketUser docNotesgithub.com/apache/pulsar/tree/master/pulsar-websocket
note

Client / Broker compatibility

A design goal of Pulsar is to ensure full compatibility between all versions of the client and the broker. When a client connects to a broker they agree upon a version of the protocol to use. As a result, new features that rely on an updates to the protocol are only available when using both newer clients and newer brokers.

Feature matrix

The Client Feature Matrix page provides an overview of the latest feature supportability on language-specific clients.

Third-party clients

Besides the officially released clients, multiple projects on developing Pulsar clients are available in different languages.

tip

Want your repository listed here? Click the "Edit this page" button at the bottom of this page.

Alternative .NET (C#/F#/VB) client

This is an alternative for Apache Pulsar project's dotPulsar client.

ProjectDescriptionLicenseBadges
pulsar-client-dotnetAn alternative Apache Pulsar native client for .NET (C#/F#/VB)MITGitHub Repo Stars GitHub Last Commit

Alternative Go client

This is an alternative Apache Pulsar project's Go client

ProjectDescriptionLicenseBadges
pulsar-client-goAn alternative Go client library for Apache PulsarApache-2.0GitHub Repo Stars GitHub Last Commit

Haskell

ProjectDescriptionLicenseBadges
supernovaApache Pulsar client for HaskellApache-2.0GitHub Repo Stars GitHub Last Commit

Node.js

ProjectDescriptionLicenseBadges
pulsar-flexPulsar Flex is a modern Apache Pulsar client for Node.js, developed to be independent of C++.MITGitHub Repo Stars GitHub Last Commit

PHP

ProjectDescriptionLicenseBadges
pulsar-client-phpPHP Native Client library for Apache PulsarMITGitHub Repo Stars GitHub Last Commit

Rust

ProjectDescriptionLicenseBadges
pulsar-rsRust Client library for Apache PulsarApache-2.0GitHub Repo Stars GitHub Last Commit

Scala

ProjectDescriptionLicenseBadges
pulsar4sIdiomatic, typesafe, and reactive Scala client for Apache PulsarApache-2.0GitHub Repo Stars GitHub Last Commit
neutronPurely functional Apache Pulsar client for Scala built on top of Fs2Apache-2.0GitHub Repo Stars GitHub Last Commit
neutron (profunktor's fork)Fs2-powered Apache Pulsar client with support for Scala 2 and 3Apache-2.0GitHub Repo Stars GitHub Last Commit

JMS

ProjectDescriptionLicenseBadges
pulsar-jmsJMS Client library for Apache PulsarApache-2.0GitHub Repo Stars GitHub Last Commit