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.

Revisions

  1. mindnuts revised this gist Apr 17, 2020. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -4,5 +4,7 @@ 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
    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
    ```
  2. mindnuts revised this gist Apr 17, 2020. 2 changed files with 20 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,8 @@
    ========
    To invoke use this:

    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
    ```
    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
    ```
    15 changes: 15 additions & 0 deletions package.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    {
    "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"
    }
    }
  3. mindnuts created this gist Apr 17, 2020.
    4 changes: 4 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,4 @@
    ========
    To invoke use this:

    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
    62 changes: 62 additions & 0 deletions queue_write.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    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();