Skip to content

Instantly share code, notes, and snippets.

@niradler
Created October 21, 2018 11:10
Show Gist options
  • Save niradler/98ee7852878c554787b7984afcf6e1fc to your computer and use it in GitHub Desktop.
Save niradler/98ee7852878c554787b7984afcf6e1fc to your computer and use it in GitHub Desktop.
aws sqs helper promise methods
var aws = require('aws-sdk');
const { AWS_KEY, AWS_SECRET } = process.env;
var sqs = new aws.SQS({ accessKeyId: AWS_KEY, secretAccessKey: AWS_SECRET, region: 'us-east-1' });
const QueueUrl = '';
const enablesPolling = (ReceiveMessageWaitTimeSeconds = "5") => new Promise ((resolve,reject) => {
const params = {
Attributes: {
ReceiveMessageWaitTimeSeconds,
},
QueueUrl
};
sqs.setQueueAttributes(params, (err, data)=> {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
const purgeQueue = () => new Promise ((resolve,reject) => {
const params = {
QueueUrl
};
sqs.purgeQueue(params, function(err, data) {
if (err) reject(err); // an error occurred
else resolve(data); // successful response
});
});
const sendMessage = (body, MessageAttributes) => {
const params = {
MessageBody: JSON.stringify(body),
QueueUrl
};
return new Promise((resolve, reject) =>
sqs.sendMessage(params, (err, data) => {
if (err)
reject(err, err.stack); // an error occurred
else resolve(data); // successful response
})
);
};
const receiveMessage = (MaxNumberOfMessages = "1", VisibilityTimeout, WaitTimeSeconds) => {
const params = {
QueueUrl,
MaxNumberOfMessages,
VisibilityTimeout,
WaitTimeSeconds,
AttributeNames: [
'All'
],
MessageAttributeNames: [
"All"
]
};
return new Promise((resolve, reject) =>
sqs.receiveMessage(params, (err, data) => {
if (err)
reject(err, err.stack); // an error occurred
else resolve(data); // successful response
})
);
};
const deleteMessage = (ReceiptHandle) => {
const deleteParams = {
QueueUrl,
ReceiptHandle: ReceiptHandle
};
return new Promise((resolve, reject) =>
sqs.deleteMessage(deleteParams, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
})
);
};
module.exports = {
purgeQueue,
enablesPolling,
receiveMessage,
sendMessage,
deleteMessage
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment