UNPKG

@incdevco/framework

Version:
87 lines (51 loc) 1.66 kB
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;