@abassade/events
v1.0.9
Published
The events module for nats-jetstream
Downloads
2
Readme
Nats Jetstream library for NodeJS
The @abassade/events package provides a simplified interface for integrating NATS and JetStream messaging into your Node.js applications. This library exposes easy-to-use methods for connecting, publishing, and subscribing to messages, making it straightforward to incorporate these powerful messaging systems into your projects.
Installation
To install the package, use npm or yarn:
npm install @abassade/events
or
yarn add @abassade/events
Usage
Connecting
To use the library, first, you need to establish a connection to the NATS server and setup the topics/subjects with the stream.
import { nats, normalizeSubject } from '@abassade/events';
const natsUrl = 'nats://localhost:4222'; // you can replace this by your nats server url (host:port)
const subjects = ["provider.bank.account.created"]; // list of topics
const streamName = "Account-stream"; // stream name
async function start() {
try {
await nats.connect({ servers: "0.0.0.0:4222" });
const jsm = await nats.nc.jetstreamManager();
await nats.setupStream(subjects, streamName, jsm);
} catch (error) {
console.error('Failed to connect to NATS server:', error);
}
}
start();
Publishing Messages
Once connected, you can publish messages to a subject.
import { nats, normalizeSubject } from '@abassade/events';
async function start() {
try {
await nats.publish(normalizeSubject("provider.bank.account.created"), {
id: "sdzfsdfz",
account_name: "John Doe",
});
console.log("published successful");
} catch (error) {
console.error('Failed to publish:', error);
}
}
Subscribing to Messages
You can also subscribe to subjects to receive messages.
import { nats, normalizeSubject } from '@abassade/events';
async function start() {
const postCreatedHandler = async (event: any, msg: JsMsg) => {
try {
console.log("event>>>", event); // you can make use of the events recieved
msg.ack();
} catch (error) {
console.log(error);
}
};
(async () => {
await nats.subscribe(
normalizeSubject("provider.polaris.account.created"),
postCreatedHandler
);
})();
API Reference
connect(natsUrl: string): Promise<void>
Establishes a connection to the NATS server.
natsUrl
: The URL of the NATS server.
publish(subject: string, message: any): Promise<void>
Publishes a message to the specified subject.
subject
: The subject to which the message will be published.message
: The message to publish.
subscribe(subject: string, callback: (message: any) => void): Promise<void>
Subscribes to the specified subject to receive messages.
subject
: The subject to subscribe to.callback
: A function that will be called with each received message.
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
License
This project is licensed under the MIT License. See the LICENSE file for details.