region sync
Wraps SNS/SQS with some boilerplate logic we use for syncing data between regions:
SNS+SQS:
- structure all messages with
date
,fromRegion
and JSON encodedpayload
.
SQS:
- prevents handlers being called if source + dest regions are the same
- deletes messages after handler has handled (if successful)
- sets up the continuous long poll
SQS usage:
const {createHandler} = require('@5app/region-sync');
const queueUrl = 'http://localhost:4576/000000000000/fooq';
const handler = createHandler({
backoffSeconds: 4,
longPollSeconds: 1,
currentRegion: 'us-east-1',
});
handler.addQueueHandler(queueUrl, async function (msg) {
// handle it, but if promise rejects, the message wont be removed.
});
SNS usage:
const {createPublisher} = require('@5app/region-sync');
const payload = {foo: 'bar'};
const publisher = createPublisher({
currentRegion: 'us-east-1',
snsRegion: 'us-east-1',
});
await publisher.publish(topicArn, payload);
testing
LOGS_LEVEL=info npm test