mq-memory
Easy in-memory message queue. Same tool as mq-mongo but storing queue data in memory (not database).
Note:
This tool is much easier and quicker then
mq-mongo
. Use it if you have no big amount of data and if you don't need persistent queue between script starts.
Install
npm i mq-memory
Usage
const mq = ;const q = ;q;
options
options.ttl
- time-to-live (ms) for taken message before it will be acked or returned to queue. Defaults to 30000.options.tries
- just how many times single message may be taken and returned to queue without ack. Defaults to 10.options.strict
- iftrue
methodget
will work in strict mode (throws error instead of returningnull
). Defaults tofalse
.options.insistent
- iftrue
thenget
will begins from last failed (returned to queue without ack) messages. Iffalse
thenget
follow 'FIFO' rule.options.items
- message or array of messages for adding to queue on start.
methods
q.add(something)
- adds single message or array of messages to queue. Returns number of added messages.q.get(ttl)
- gets message from queue. Optional parameter is individualttl
for that specific message. Returns message object if there is messages ready. If no waiting messages returnsnull
or (ifoptions.strict
set totrue
) throws error.q.ack(tag)
- deletes successfully handled message (specified by tag field) from queue. Returnstag
string of deleted message or null (if no message with such tag or if ttl expires).q.ping(tag, ttl)
- prolong ttl of message specified by tag field. Optional parameterttl
defaults tooptions.ttl
of queue.q.waiting()
- returns quantity of messages in queue.q.active()
- returns quantity of messages in work (waiting for ack).q.failed()
- returns quantity of failed messages (all tries is over).q.total()
- returns total quantity of messages (sum of three above).q.stats()
- returns object with quantities of waiting, active and failed messages.q.options()
- getter, returns object with some options ({ttl, tries, insistent}
).
message fields
msg.data
- payload data of message.msg.created
- time (unix TS, number) when message was added to queue.msg.expires
- time (unix TS, number) when message will returns to queue.msg.tries
- just how many times this message was getted from queue.msg.tag
- unique tag for this try (for use inack
andping
).
Example
const mq = ; const q = ;q;const msg = q;;q;
See tests for more complicated examples.
License
MIT