@ordermentum/steveo
TypeScript icon, indicating that this package has built-in type declarations

5.1.0-beta • Public • Published

Welcome to steveo 👋

Version License: Apache--2.0

npm version CI npm npm

A Task Pub/Sub Background processing library (Task Framework for Node.js)

Steveo is a task management library that supports Kafka, SQS and Redis.

Think of it as sidekiq for node.js with support for multiple backends.

Installation

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js. Node.js 12 or higher is required.

If this is a brand new project, make sure to create a package.json first with the npm init command.

Installation is done using the npm install command:

$ npm install steveo

Author

👤 engineering@ordermentum.com

Task

Holds the information about the type of task. It has below methods,

  • publish - send a message onto a queue
  • subscribe - process a message

Registry

Responsible for keeping the inventory of tasks & event manager. Whenever a new task is created, an entry will be added in the registry

Runner

Responsible for consuming messages,

  • process method initialize group consumers and start to consume the messages. It will then call the subscribe callback set on the task

Emitting events based on success/failures

  • runner_receive -> Received a message

  • runner_complete -> Completed running the associated task

  • runner_failure -> Failed running the associated task

  • runner_connection_failure -> Error while polling for message (Kafka only)

  • task_send

  • task_success

  • task_failure

  • task_added

  • task_removed

  • producer_success

  • producer_failure

Example

(async () => {
  const steveo = Steveo({
    kafkaConnection: process.env.KAFKA_CONNECTION,
    clientId: '1234-123',
  });

  const example = steveo.task('example-task', async ({ name }) => {
    console.log(`hello ${name}`);
  });

  await example.publish({ name: 'tommo' });
  await example.publish({ name: 'bazza' });

  await steveo.runner().process();
})();

Publish without registering a task

await steveo.publish('example-task', { name: 'Apple' });

For more details, see example

Contributing

Installing dependencies

yarn install

Running tests

yarn run test

Architecture

On a highlevel, it works as below, Steveo has 3 main components

              +-----------+     +-----------+     +-----------+
              |           |     |           |     |           |
PUBLISH ----->|   TASK    |     | REGISTRY  |     |   RUNNER  |-----> RECEIVE
              |           |     |           |     |           |
              |           |     |           |     |           |
              +-----------+     +-----------+     +-----------+

Credits

Readme

Keywords

none

Package Sidebar

Install

npm i @ordermentum/steveo

Weekly Downloads

1

Version

5.1.0-beta

License

Apache-2.0

Unpacked Size

115 kB

Total Files

59

Last publish

Collaborators

  • lmagalhaes
  • jcdagostino
  • rowan.smith.om
  • sugendran.ordermentum
  • ordermentumeng
  • mariancastro
  • tjcoyoca
  • zdcatom
  • kgstaana-ordermentum
  • rraymundo19
  • johndagostino
  • ishmeet-ordermentum