A simple sqs message poller.
It provides the functionality to call receiveMessage() on AWS::SQS after short interval of time and put them in internal messages list and emit them one by one, when internal messages list is empty it pulls messages again from SQS and so on. Idea is to pull next messages batch only when we are done processing the previous one. This can help scaling certain areas of your app that are using same message queue.
- message
var Poller = require('aws-sqs-poller'),
options = {
name : "your-queue", // required
useIAMRole : true // optional
accessKeyId : 'aws-key', // required if useIAMRole = false
secretAccessKey : 'aws-secret-access-key', // required if useIAMRole = false
region : 'us-west-1', // optional, default is 'us-east-1'
maxMessages : 4, // optional, default is 10, must be between 1-10
};
var myQueue = new Poller(options);
myQueue.start(); // calling this will start the poller
myQueue.on('message', function (msg) { // will emitted on first message or on calling mqQueue.next()
console.log('handle: ', msg.receiptHandle);
console.log('data: ', msg.body); // internally will try parese it as JSON
console.log('md5: ', msg.md5OfBody);
/*
* Your business logix
*/
// Want to delete message from SQS.
msg.remove();
// Move to next message
myQueue.next();
});
- Bumped version. Added log process.pid as log prefix
- code refactoring
- log message change
- bug fix
- bug fix, unable to pull message in some cases.
- not to start poller if there is problem talking to Queue.
- README changes
- new option.useIAMRole for production use
- Upgrade packages
- Removed incomplete test cases and unwanted packages, package is much leaner now