Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/apache/pulsar-client-node
Apache Pulsar NodeJS Client
https://github.com/apache/pulsar-client-node
event-streaming javascript messaging node nodejs pubsub pulsar queuing streaming
Last synced: 6 days ago
JSON representation
Apache Pulsar NodeJS Client
- Host: GitHub
- URL: https://github.com/apache/pulsar-client-node
- Owner: apache
- License: apache-2.0
- Created: 2019-03-01T12:35:51.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-20T03:17:40.000Z (about 2 months ago)
- Last Synced: 2024-11-29T03:11:33.334Z (13 days ago)
- Topics: event-streaming, javascript, messaging, node, nodejs, pubsub, pulsar, queuing, streaming
- Language: C++
- Homepage: https://pulsar.apache.org/
- Size: 1.74 MB
- Stars: 148
- Watchers: 39
- Forks: 86
- Open Issues: 69
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-pulsar - NodeJS
README
# Pulsar Node.js client library
The Pulsar Node.js client can be used to create Pulsar producers and consumers in Node.js. For the supported Pulsar features, see [Client Feature Matrix](https://pulsar.apache.org/client-feature-matrix/).
This library works only in Node.js 12.3 or later because it uses:
1. The [node-addon-api](https://github.com/nodejs/node-addon-api) module to wrap the C++ library.
2. The [Mozilla CA](https://nodejs.org/api/tls.html#tlsrootcertificates) file, which is provided by Node.js v12.3.0 and subsequent versions.## Getting Started
> **Note**
>
> These instructions are only available for versions after 1.8.0. For versions previous to 1.8.0, you need to install the C++ client first. Please switch to the corresponding version branch of this repo to read the specific instructions.
>
> To run the examples, skip this section.To use the Pulsar Node.js client in your project, run:
```shell
npm install pulsar-client
```or
```shell
yarn add pulsar-client
```Then you can run the following simple end-to-end example:
```javascript
const Pulsar = require('pulsar-client');(async () => {
// Create a client
const client = new Pulsar.Client({
serviceUrl: 'pulsar://localhost:6650'
});// Create a producer
const producer = await client.createProducer({
topic: 'persistent://public/default/my-topic',
});// Create a consumer
const consumer = await client.subscribe({
topic: 'persistent://public/default/my-topic',
subscription: 'sub1'
});// Send a message
producer.send({
data: Buffer.from("hello")
});// Receive the message
const msg = await consumer.receive();
console.log(msg.getData().toString());
consumer.acknowledge(msg);await producer.close();
await consumer.close();
await client.close();
})();
```You should find the output as:
```
hello
```You can see more examples in the [examples](./examples) directory. However, since these examples might use an API that was not released yet, you need to build this module. See the next section.
## How to build
> **Note**
>
> Building from source code requires a Node.js version greater than 16.18.First, clone the repository.
```shell
git clone https://github.com/apache/pulsar-client-node.git
cd pulsar-client-node
```Since this client is a [C++ addon](https://nodejs.org/api/addons.html#c-addons) that depends on the [Pulsar C++ client](https://github.com/apache/pulsar-client-cpp), you need to install the C++ client first. You need to ensure there is a C++ compiler that supports C++11 installed in your system.
- Install C++ client on Linux:
```shell
pkg/linux/download-cpp-client.sh
```- Install C++ client on Windows:
```shell
pkg\windows\download-cpp-client.bat
```- Install C++ client on macOS:
```shell
pkg/mac/download-cpp-client.sh
```After the C++ client is installed, run the following command to build this C++ addon.
```shell
npm install
```To verify it has been installed successfully, you can run an example like:
> **Note**
>
> A running Pulsar server is required. The example uses `pulsar://localhost:6650` to connect to the server.```shell
node examples/producer
```You should find the output as:
```
Sent message: my-message-0
Sent message: my-message-1
Sent message: my-message-2
Sent message: my-message-3
Sent message: my-message-4
Sent message: my-message-5
Sent message: my-message-6
Sent message: my-message-7
Sent message: my-message-8
Sent message: my-message-9
```## Documentation
For more details about Pulsar Node.js clients, see [Pulsar docs](https://pulsar.apache.org/docs/client-libraries-node/).
### Contribute
Contributions are welcomed and greatly appreciated.
If your contribution adds Pulsar features for Node.js clients, you need to update both the [Pulsar docs](https://pulsar.apache.org/docs/client-libraries/) and the [Client Feature Matrix](https://pulsar.apache.org/client-feature-matrix/). See [Contribution Guide](https://pulsar.apache.org/contribute/site-intro/#pages) for more details.
### Generate API docs
```shell
npm install
npx typedoc
# Documentation generated at ./apidocs
```