Tasks Queue
This module is an abstraction of RabbitMQ.
It supports both promises and callbacks.
Install
npm install --save vf-tasks-queue
API
TaskQueueLib.connect(options, [callback])
Returns a task queue, ready to send and process tasks.
Parameters
- options (Object): Tasks queue configuration
- prefix (Object): Appends a string to all task types to create a namespace.
- rabbitmq (Object): Configuration to connect to RabbitMQ server.
- host (String): Server host.
- port (String): Server port.
- user (String): Server user.
- password (String): Server password.
- rabbitmq (Object): Configuration to connect to RabbitMQ server.
- prefix (Object): Appends a string to all task types to create a namespace.
tasksQueue.send(type, data, [callback])
Stores a new task in the queue.
Parameters
- type (String): Task type, this is used to match task processors.
- data (Object): An data object that will be sent to processor when takes this task.
tasksQueue.process(type, processor, [concurrency])
Takes tasks and process them.
Parameters
- options (String): Options to start processing tasks.
- type (String): Task type, this is used to fetch only this type of tasks.
- concurrency (Integer): An integer that indicates the number of tasks that can be processed at the same time. Defaults to
1
.
- processor (Function): A function that will process a task. This function will receive 1 parameter:
data
. You sould return a promise, otherwise task won't be marked as resolved and will be processed again.
tasksQueue.clearQueue(type, [callback])
Removes all unprocessed tasks of a type.
Parameters
- type (String): Task type, this is used to remove only this type of tasks.
tasksQueue.close([callback])
Closes the connection with database.
Example:
config.js
moduleexports = prefix: 'queue' rabbitmq: host: 'localhost' ;
tasks_sender.js
const config = ;const tasksQueueConnector = ;const taskType = 'test-task';const taskData = name: 'Chewbacca'; tasksQueueConnector ;
tasks_processor.js
const config = ;const tasksQueueConnector = ;const taskType = 'test-task'; const processor = { console; // Prints "Chewbacca" return Promise;} const options = type: taskType concurrency: 1 ; tasksQueueConnector ;
Tests
npm test
License
MIT