Skip to content

Instantly share code, notes, and snippets.

@mindnuts
Last active April 17, 2020 13:36
Show Gist options
  • Save mindnuts/13e238c6d46affc4f616d9a4a774a591 to your computer and use it in GitHub Desktop.
Save mindnuts/13e238c6d46affc4f616d9a4a774a591 to your computer and use it in GitHub Desktop.
Read Messages from Queue A and Write them to Queue B

======== To invoke use this:

npm install

AWS_PROFILE=prod AWS_REGION=eu-west-1 \
    DEAD_LETTER_QUEUE_URL=https://sqs.eu-west-1.amazonaws.com/1234567/dead_letter_prod_process_formbuilder_data \
    QUEUE_URL=https://sqs.eu-west-1.amazonaws.com/12345678/prod_process_formbuilder_data node send_message.js
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"aws-sdk": "^2.637.0",
"sqs-consumer": "^5.4.0"
}
}
const fs = require('fs');
// 'a' flag stands for 'append'
const datetime = new Date().toISOString();
const file_name = `${datetime.slice(0,10)}_${datetime.slice(11,19)}`;
console.log(file_name);
const log = fs.createWriteStream(`${file_name}.txt`, { flags: 'a' });
const AWS = require('aws-sdk');
if (!AWS.config.region) {
AWS.config.update({
region: 'eu-west-1'
});
}
const { Consumer } = require('sqs-consumer');
// console.log(process.env);
var sqs = new AWS.SQS({
endpoint: 'https://sqs.eu-west-1.amazonaws.com',
maxRetries: 10
});
function convertToNDJSON(data) {
log.write(`${JSON.stringify(data)}\n`);
}
const url = process.env.DEAD_LETTER_QUEUE_URL ? process.env.DEAD_LETTER_QUEUE_URL : 'https://sqs.eu-west-1.amazonaws.com/123456789/dead_letter_dev_process_formbuilder_data_testing';
const msgUrl = process.env.QUEUE_URL ? process.env.QUEUE_URL : 'https://sqs.eu-west-1.amazonaws.com/123456789/dead_letter_dev_process_formbuilder_data';
const app = Consumer.create({
queueUrl: url,
handleMessage: async (message) => {
convertToNDJSON(message.Body);
var dataToSend = {
QueueUrl: msgUrl,
MessageBody: message.Body
}
sqs.sendMessage(dataToSend, function (wErr, resp) {
if (wErr) {
console.log("Error while sending message: ", wErr)
} else if(resp) {
console.log(">>>> Message sent successfully: ", resp);
} else {
console.log("Responded with incorrect value: ",resp)
}
});
}
});
app.on('error', (err) => {
console.error(err.message);
});
app.on('processing_error', (err) => {
console.error(err.message);
});
app.on('timeout_error', (err) => {
console.error(err.message);
serialize.end();
});
app.start();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment