2.1.1 • Published 1 year ago

@pedidopago/redis-reliable-queue v2.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

redis-reliable-queue

go node-ts

A Node.js module that implements a reliable queue that uses Redis for the backend. It uses the RPOPLPUSH pattern: https://redis.io/commands/rpoplpush#pattern-reliable-queue

References: https://blog.tuleap.org/how-we-replaced-rabbitmq-redis

Installation

# with npm:
npm install @pedidopago/redis-reliable-queue --save

# with yarn:
yarn add @pedidopago/redis-reliable-queue

Usage

import { ReliableQueue, Listener, Message } from '@pedidopago/redis-reliable-queue';
// import { ClientOpts } from 'redis';
// ...
type MyMessagePayload interface {
    order_id : string;
}
// create a queue with exis
const rq = ReliableQueue.newWithRedisOpts<MyMessagePayload>("queuename", 6379,"redis-host.pedidopago.com.br");
// send a message:
await rq.pushMessage("topic", {order_id: "FFABE9"});
// listen for messages:
const listener = await rq.listen("worker-id");
// the worker ID is used to retrieve messages if the service crashes while reading messages.

// to wait until a message is received:
const [message, finalizemsg] = await listener.waitForMessage();
// the message is of type Message<MyMessagePayload> in this case
console.log(message.topic); // string -> "topic"
console.log(message.content); // MyMessagePayload {order_id: "FFABE9"}
await finalizemsg(); // you must run this after you did something with msg successfully
// failing to run "finalizemsg" will persist the message, so it will be received
// again once you instantiate rq.listen("id") after a restart

Test

Setup the ".env" (optional):

#.env
REDIS_HOST=192.168.X.Y
REDIS_PORT=6379
TEST_QUEUE=sometestqueue

Run:

npm run test
2.0.3

1 year ago

2.1.1

1 year ago

2.0.2

1 year ago

2.0.4

1 year ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.5.0

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.2.0

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago