Created
March 28, 2021 06:40
-
-
Save kaushalvivek/2178f1cdedea1ad576a83d9586c1f1ef to your computer and use it in GitHub Desktop.
A function to queue messages to AWS SQS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const aws = require('aws-sdk') | |
const uuid = require('uuid') | |
const splitArray = require('split-array') | |
const sqsConfig = { | |
apiVersion: "2012-11-05", | |
accessKeyId: "<sqs-user's ACCESS_KEY_ID here>", | |
secretAccessKey: "<sqs-user's SECRET_ACCESS_KEY here>", | |
region: "AWS REGION HERE" // you can see your AWS region in your queue ARN, like: | |
// arn:aws:sqs:<AWS REGION>:user-id:queue-name | |
} | |
aws.config.update(sqsConfig) | |
const sqs = new aws.SQS({ apiVersion: config.aws.apiVersion }) | |
const queueMessages = async function (messages, queueUrl) { | |
try { | |
// only 10 messages can be queued to SQS at one time, hence | |
// we break our messages into chunks of 10 messages. | |
const splittedArray = splitArray(messages, 10) | |
for (const arr of splittedArray) { | |
const params = { | |
QueueUrl: queueUrl, | |
Entries: [] | |
} | |
arr.forEach(message => { | |
params.Entries.push({ | |
// Id is a unique ID assigned to each message | |
// read more about how Id is used in AWS's documentation | |
Id: uuid.v4(), | |
MessageBody: JSON.stringify(message) | |
}) | |
}) | |
await sqs.sendMessageBatch(params).promise() | |
}; | |
return (201) | |
} catch (e) { | |
throw new Error(e.message) | |
} | |
} | |
// Example usage of function: | |
const messages = [ | |
{ | |
"field1": "this is message 1", | |
"field2":"X" | |
}, | |
{ | |
"field1":"this is message 2", | |
"field2": "Y" | |
} | |
] | |
const response = await queueMessage(messages, "https://<QUEUE_URL_HERE -- copy from SQS console>") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment