@genie-solutions/sqs-toolbelt
v2.1.0
Published
Toolbelt for creating SQS providers and consumers
Downloads
19
Readme
Genie SQS Toolbelt
Set of reusable tools to make writing new SQS producers and consumers a breeze.
How to publish a new version
After your branch has been merged into master:
- Checkout the master branch:
git checkout master
. - Pull down the latest changes on master:
git pull
. - Run the correct command out of the following, depending on if your change was a patch (bug fix), minor (non-breaking change), major (breaking change):
3.1 Patch:
npm version patch
3.2 Minor:npm version minor
3.3 Major:npm version major
Sample Usage
import { setSQS, sendMessage, onReceiveMessage, ProcessorResult } from '@genie-solutions/sqs-toolbelt';
import AWS = require('aws-sdk');
import uuid = require('uuid');
const sqs = new AWS.SQS({ region: 'ap-southeast-2' });
const queueUrl = `${SQS.BASE_URL}/${SQS.ACCOUNT_NUMBER}/${queueName}`;
setSQS(sqs); // set custom SQS instance, new AWS.SQS() will be used by default
setLogger(logger); // set custom logger, console will be used by default
sendMessage(queueUrl, {
correlationId: req.headers['X-Correlation-ID'],
body: JSON.stringify(payload),
});
/*
if dlQueueUrl provided message will be moved to DLQ straightaway when {success:false, retry: false} received.
IMPORTANT NOTE: re-drive policy and dead-letter queue should still be configured for the main queue, dlQueueUrl is to allow skip SQS re-drive policy when `retry: false` returned.
*/
onReceiveMessage({
queueUrl: '<queue_url>',
dlQueueUrl: '<optional_dead_letter_queue_url>',
processor: async ({ correlationId, body }): Promise<ProcessorResult> => {
// do something with the message correlationId and body
return { success: true };
}
})
Running tests
To run test, first start the SQS docker container: docker-compose up -d
.
Now tests can be run with npm test
.