sqs-utils v1.0.0
sqs-utils
Build Amazon SQS-based applications without the boilerplate. SQSUtils provides you with everything you need to poll and send messages to Amazon AWS.
Installation
npm install sqs-utilsUsage
Create a new SQSUtils instance and tell it which SQS queue to use:
const SQSUtils = require('sqs-utils');
const queue = new SQSUtils({
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name'
});Credentials
By default the library will look for AWS credentials in the places specified by the AWS SDK. The simplest option is to export your credentials as environment variables:
export AWS_SECRET_ACCESS_KEY=...
export AWS_ACCESS_KEY_ID=...Alternatively you can provide your credentials upon creation of any new SQSUtils instance:
const queue = new SQSUtils({
accessKeyId: 'AWS-ACCESS-KEY-ID',
secretAccessKey: 'AWS-ACCESS-KEY',
region: 'AWS-REGION',
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name'
});You can also provide a pre-configured instance of the AWS SQS client:
const queue = new SQSUtils({
accessKeyId: 'AWS-ACCESS-KEY-ID',
secretAccessKey: 'AWS-ACCESS-KEY',
region: 'AWS-REGION',
queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name'
});Continuous polling
This uses sqs-consumer to continuously poll the queue for messages. Just define a function that receives an SQS message and call a callback when the message has been processed.
queue.listen({
visibilityTimeout: 300,
handleMessage: function(message, done) {
// Do your message handling in here
console.log(message);
// Remove the message from the queue
done();
},
handleError: function(err) {
// Handle errors
console.log(err);
}
});- The queue is polled continuously for messages using long polling.
- Messages are deleted from the queue once
done()is called. - Calling
done(err)with an error object will cause the message to be left on the queue. An SQS redrive policy can be used to move messages that cannot be processed to a dead letter queue.
To stop listening for new messages simply call .stop():
queue.stop();Polling a single message
You can also poll the single next message from the queue.
queue.receiveMessage({
visibilityTimeout: 300
}, function(err, data) {
console.log(data);
});Sending messages
To send new messages to the queue use .sendMessage():
queue.sendMessage({
message: { text: 'hello' },
delaySeconds: 0
}, function(err) {
// Error handling here...
});License
9 years ago