1.0.1 • Published 7 years ago
mq-memory v1.0.1
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-memoryUsage
const mq = require('mq-memory');
const q = mq(options);
q.get().then(msg => {/* Do something */});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- iftruemethodgetwill work in strict mode (throws error instead of returningnull). Defaults tofalse.options.insistent- iftruethengetwill begins from last failed (returned to queue without ack) messages. Iffalsethengetfollow '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 individualttlfor that specific message. Returns message object if there is messages ready. If no waiting messages returnsnullor (ifoptions.strictset totrue) throws error.q.ack(tag)- deletes successfully handled message (specified by tag field) from queue. Returnstagstring 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 parameterttldefaults tooptions.ttlof 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 inackandping).
Example
const mq = require('mq-memory');
const q = mq({
ttl = 30000, // default message ttl
tries = 10, // default tries to handle message
});
q.add('test');
const msg = q.get();
doSomethingWithData(msg.data);
q.ack(msg.tag);See tests for more complicated examples.
License
MIT