@balena/jellyfish-queue
TypeScript icon, indicating that this package has built-in type declarations

4.1.31 • Public • Published

Notice: This utility has been discontinued. The functionality provided by this module has been merged into jellyfish-worker.

Jellyfish Queue

The Jellyfish system processes incoming action requests and adds them to a queue so that they can be retrieved and executed in order.

This module provides a small set of functions to perform any queue-related operations, and should be utilized by any module requiring interaction with queued objects.

Note that, although jellyfish-queue is mostly used for enqueuing action requests, it could also be used to support handling other types of objects as well.

Under-the-hood, this module makes use of graphile-worker, a persistent job queue that supports PostgreSQL and can be used to run jobs "in the background" so that application code is not held up.

Goals

  • The queue aims to be fast
  • The queue aims to be a layer on top of jellyfish-core to allow for the effective management of queued objects of any type.

Usage

Below is an example how to use this library:

import { Consumer } from '@balena/jellyfish-queue';
import type { ActionRequestContract } from '@balena/jellyfish-types/build/core';

const producer = new Producer(kernel, kernel.sessions.admin);
await producer.initialize(context);

const consumer = new Consumer(kernel, kernel.sessions.admin);
await consumer.initializeWithEventHandler(
  logContext,
  async (payload: ActionRequestContract): void => {
    console.log("Message received: ", payload)
  }
)

Documentation

Publish Documentation

Visit the website for complete documentation: https://product-os.github.io/jellyfish-queue

Testing

Unit tests can be easily run with the command npm test.

The integration tests require Postgres and Redis instances. The simplest way to run the tests locally is with docker-compose.

$ npm run test:compose

You can also run tests locally against Postgres and Redis instances running in docker-compose:

$ npm run compose
$ REDIS_HOST=localhost POSTGRES_HOST=localhost npx jest test/integration/queue/index.spec.ts

You can also access these Postgres and Redis instances:

$ PGPASSWORD=docker psql -hlocalhost -Udocker
$ redis-cli -h localhost

Readme

Keywords

none

Package Sidebar

Install

npm i @balena/jellyfish-queue

Weekly Downloads

5

Version

4.1.31

License

Apache-2.0

Unpacked Size

198 kB

Total Files

37

Last publish

Collaborators

  • dfunckt
  • page
  • balena.io