@incdevco/framework
Version:
node.js lambda framework
87 lines (51 loc) • 1.66 kB
JavaScript
var AWS = require('aws-sdk');
var Action = require('../index');
function Queue(config) {
config = config || {};
this.maxNumberOfMessages = config.maxNumberOfMessages || 10;
this.queueUrl = config.queueUrl;
this.sqs = config.sqs || new AWS.SQS();
this.visibilityTimeout = config.visibilityTimeout || 60;
this.waitTimeSeconds = config.waitTimeSeconds || 20;
}
Queue.prototype.delete = function (action) {
this.sqs.deleteMessage({
QueueUrl: this.queueUrl,
ReceiptHandle: action.message.ReceiptHandle
}).promise();
};
Queue.prototype.receive = function () {
var params = {
MaxNumberOfMessages: this.maxNumberOfMessages,
QueueUrl: this.queueUrl,
VisibilityTimeout: this.visibilityTimeout,
WaitTimeSeconds: this.waitTimeSeconds
};
console.log('sqs.receiveMessages', JSON.stringify(params, null, 2));
return this.sqs.receiveMessages(params).promise()
.then(function (result) {
var actions = [];
if (result.Messages) {
result.Messages.forEach(function (message) {
var action = new Action();
action.fromMessage(message);
actions.push(action);
});
}
return actions;
});
};
Queue.prototype.send = function (action) {
this.sqs.sendMessage({
MessageBody: action.toMessageBody(),
QueueUrl: this.queueUrl
}).promise();
};
Queue.prototype.sendSimple = function (name, data, user) {
var action = new Action();
action.name = name;
action.data = data;
action.user = user;
return this.send(action);
};
module.exports = Queue;