npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@dbos-inc/dbos-kafkajs

v1.17.11-preview.g5f42092e6b

Published

Communicator/event receiver library - Kafka using KafkaJS

Downloads

9

Readme

DBOS Kafka Library (KafkaJS Version)

Publish/subscribe message queues are a common building block for distributed systems. Message queues allow processing to occur at a different place or time, perhaps in multiple client programming environments. Due to its performance, flexibility, and simple, scalable design, Kafka is a popular choice for publish/subscribe.

This package includes a DBOS communicator for sending Kafka messages, as well as an event receiver for exactly-once processing of incoming messages (even using standard queues).

This package is based on KafkaJS. We are working on other client libraries for Kafka, please reach out to us if you are interested in a different client library.

Configuring a DBOS Application with Kafka

Ensure that the DBOS SQS package is installed into the application:

npm install --save @dbos-inc/dbos-kafkajs

Sending Messages

Imports

First, ensure that the communicator and associated classes are imported:

import {
  KafkaConfig,
  logLevel,
  KafkaProduceCommunicator,
  Partitioners,
} from "@dbos-inc/dbos-kafkajs";

Selecting A Configuration

KafkaProduceCommunicator is a configured class. This means that the configuration (or config file key name) must be provided when a class instance is created, for example:

const kafkaConfig: KafkaConfig = {
  clientId: 'dbos-kafka-test',
  brokers: [`${process.env['KAFKA_BROKER'] ?? 'localhost:9092'}`],
  requestTimeout: 100, // FOR TESTING
  retry: { // FOR TESTING
    retries: 5
  },
  logLevel: logLevel.NOTHING, // FOR TESTING
}

kafkaCfg = configureInstance(KafkaProduceCommunicator, 'defKafka', kafkaConfig, defTopic, {
    createPartitioner: Partitioners.DefaultPartitioner
});

Sending

Within a DBOS Transact Workflow, invoke the KafkaProduceCommunicator function from the workflow context:

const sendRes = await wfCtx.invoke(kafkaCfg).sendMessage({value: ourMessage});

Receiving Messages

A tutorial for receiving and processing Kafka messages can be found here.

Simple Testing

The kafkajs.test.ts file included in the source repository demonstrates sending and processing Kafka messages. Before running, set the following environment variables:

  • KAFKA_BROKER: Broker URL

Next Steps