@genie-solutions/sqs-toolbelt
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

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:

  1. Checkout the master branch: git checkout master.
  2. Pull down the latest changes on master: git pull.
  3. 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.

Readme

Keywords

none

Package Sidebar

Install

npm i @genie-solutions/sqs-toolbelt

Weekly Downloads

1

Version

2.1.0

License

ISC

Unpacked Size

9.66 MB

Total Files

14

Last publish

Collaborators

  • lucas.arundell
  • geniesolutionsadmin