1.0.1 • Published 3 years ago

redis-cluster-queue v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Redis Cluster Queue

Simple queue on Redis Cluster and single redis instance. This plugin also supports AWS ElastiCache as well. Auto discover redis is enable cluster mode or not and recreate connection again.

License

This plugin is licensed under the MIT license and can ve viewed in the LICENSE file.

Installation

Install using npm

npm install redis-cluster-queue --save

Tests

IMPORTANT: You need to have Redis running to run tests

npm test

Typescript

import { RedisClusterQueue } from 'redis-cluster-queue';

const redisClusterQueue = new RedisClusterQueue({
  host: 'localhost',
  port: 6379
});

const queueName = 'queue_' + new Date().getTime();

await redisClusterQueue.createQueue({
  name: queueName,
});

const messageId = await redisClusterQueue.sendMessage({
  queueName: queueName,
  message: 'hihi'
});

await redisClusterQueue.changeMessageVisibility({
  queueName: queueName,
  messageId,
  visibilityTimeout: 40,
});

const attributes = await redisClusterQueue.getQueueAttributes({
  name: queueName,
});

const message = await redisClusterQueue.receiveMessage({
  queueName: queueName,
});

const deleted = await redisClusterQueue.deleteMessage({
  queueName: queueName,
  messageId: message.id,
});

const queueAttributes = await redisClusterQueue.setQueueAttributes({
  name: queueName,
  visibilityTimeout: 30,
  maxsize: 2000,
  delay: 0,
});

const message2 = await redisClusterQueue.popMessage({
  queueName: queueName,
});

const queues = await redisClusterQueue.listQueues();

const queueDeleted = await redisClusterQueue.deleteQueue({
  name: queueName,
});
// in case you want to disconnect
await redisClusterQueue.quit();

Methods

Constructor

Create a new instance of RedisClusterQueue

Parameters:

ParamTypeRequiredDefaultNote
hoststringtrueredis host name
portnumbertrueredis port number
passwordstringfalseredis auth password
namespacestringfalsercqnamespace for the queue
keyPrefixstringfalseredis prefix's key for whole project

listQueues()

Get list queue's name

Return array: ######['queue_1']


createQueue(options)

Create queue

Params of options:

ParamTypeRequiredDefaultNote
namestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
visibilityTimeoutnumberfalse30The message's invisible time, in seconds, after message received, it hidden until timeout
delaynumberfalse0The time in seconds that the delivery of all new messages in the queue will be delayed. Allowed values: 0-9999999 (around 115 days)
maxsizenumberfalse65536The maximum message size in bytes. Allowed values: 1024-65536

Return: ######1 if queue created


deleteQueue(options)

Delete queue

Params of options:

ParamTypeRequiredDefaultNote
namestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -

Return: ######1 if queue deleted


getQueueAttributes(options)

Get queue's attributes

Params of options:

ParamTypeRequiredDefaultNote
namestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -

Return Object:

PropertyTypeNote
visibilityTimeoutnumberThe message's invisible time, in seconds, after message received, it hidden until timeout
delaynumberThe time in seconds that the delivery of all new messages in the queue will be delayed
maxsizenumberThe maximum message size in bytes
totalReceivednumberThe total number of message received
totalSentnumberThe total number of message sent to queue
creatednumberThe timestamp when queue created
modifiednumberThe timestamp when the last time queue modified
uidstringQueue's unique id
numOfMessagesnumberCurrent number of messages in queue
numOfHiddenMessagesnumberCurrent number of messages in flight

setQueueAttributes(options)

Get queue's attributes

Params of options(Requires at least one in three params visibilityTimeout, delay, maxsize):

ParamTypeRequiredDefaultNote
namestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
visibilityTimeoutnumberfalse30The message's invisible time, in seconds, after message received, it hidden until timeout
delaynumberfalse0The time in seconds that the delivery of all new messages in the queue will be delayed. Allowed values: 0-9999999 (around 115 days)
maxsizenumberfalse65536The maximum message size in bytes. Allowed values: 1024-65536

Return Object:

PropertyTypeNote
visibilityTimeoutnumberThe message's invisible time, in seconds, after message received, it hidden until timeout
delaynumberThe time in seconds that the delivery of all new messages in the queue will be delayed
maxsizenumberThe maximum message size in bytes
totalReceivednumberThe total number of message received
totalSentnumberThe total number of message sent to queue
creatednumberThe timestamp when queue created
modifiednumberThe timestamp when the last time queue modified
uidstringQueue's unique id
numOfMessagesnumberCurrent number of messages in queue
numOfHiddenMessagesnumberCurrent number of messages in flight

sendMessage(options)

Send a message to the queue

Params of options:

ParamTypeRequiredDefaultNote
queueNamestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
messagestringtrue
delaynumberfalse0The time in seconds that the delivery of all new messages in the queue will be delayed. Allowed values: 0-9999999 (around 115 days)

Return message's id:

######g1mia8gfux-b336fd53-d4ea-4b1e-8fad-c6217e313133


popMessage(options)

Get and delete one message immediately from queue

Params of options:

ParamTypeRequiredDefaultNote
queueNamestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -

Return Object:

PropertyTypeNote
idstringmessage's id
messagestringmessage's content
totalReceivednumbertotal time received of this message
firstReceivedTimestampnumberthe timestamp of first time received of this message
createdAtnumberthe timestamp when message created

receiveMessage(options)

Get message from queue

Params of options:

ParamTypeRequiredDefaultNote
queueNamestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
visibilityTimeoutnumberfalseThe message's invisible time, in seconds, after message received, it hidden until timeout

Return Object:

PropertyTypeNote
idstringmessage's id
messagestringmessage's content
totalReceivednumbertotal time received of this message
firstReceivedTimestampnumberthe timestamp of first time received of this message
createdAtnumberthe timestamp when message created

deleteMessage(options)

Delete the message from queue

Params of options:

ParamTypeRequiredDefaultNote
queueNamestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
messageIdstringtrueThe message's id

Return: ######1 if message deleted


changeMessageVisibility(options)

Change visibility timeout of specific message

Params of options:

ParamTypeRequiredDefaultNote
queueNamestringtruethe name of queue, should contains only these characters a-z,A-Z, 0-0, _, -
messageIdstringtrueThe message's id
visibilityTimeoutnumbertrue30The message's invisible time, in seconds, after message received, it hidden until timeout

Return: ######1 if ok


quit()

Disconnect redis