大佬教程收集整理的这篇文章主要介绍了node.js – 如何聚合AWS SQS ApproximateNumberOfMessages,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望根据队列中有多少消息来设置自动缩放组.使用多个CloudWatch警报(每个队列一个)会导致问题,因为一个队列将为空,而其他队列为“已满”.
var AWS = require('aws-sdk'); var sqs = new AWs.SQS(); var cloudWatch = new AWs.CloudWatch(); var queueUrls = ['https://sqs.REGION.amazonaws.com/ACCOUNT-numbER/queueUrl1','https://sqs.REGION.amazonaws.com/ACCOUNT-numbER/queueUrl2']; exports.handler = (event,context,callBACk) => { var fn = function (url) { return new Promise(resolve => { var sqsParams = { Attributenames: ['ApproximatenumberOfmessages'],QueueUrl: url }; sqs.getQueueAttributes(sqsParams,function(err,data){ if(err) { console.log(err,err.stack); context.fail(err); } else { resolve({name: url.split('/').pop(),messageCount: parseInt(data.Attributes.ApproximatenumberOfmessages)}); } }); }); }; var actions = queueUrls.map(fn); Promise.all(actions).then(function(queues) { var messageCount = queues.map(function(m){return m.messageCount;}); var queuenames = queues.map(function(n){return n.name;}).join(); var metricParams = { MetricData:[{ MetricName: 'ApproximatenumberOfmessages',Dimensions:[{ Name: 'Queuename',Value: queuenames }],Unit: 'Count',StatisticValues: { Maximum: Math.max.apply(Math,messageCount),Minimum: Math.min.apply(Math,SampleCount: queues.length,Sum: messageCount.reduce((pv,cv) => pv+cv,0) } }],Namespace: 'AWS/SQS' }; cloudWatch.putMetricData(metricParams,metricData){ if(err) console.log(err,err.stack); else console.log(metricData); }); }); };
显然可以优化此代码以处理2个以上的队列,并且可能可以从异步瀑布中受益.
编辑:更新以使用承诺.
EDIT2:连接CloudWatch Metric的队列名称
以上是大佬教程为你收集整理的node.js – 如何聚合AWS SQS ApproximateNumberOfMessages全部内容,希望文章能够帮你解决node.js – 如何聚合AWS SQS ApproximateNumberOfMessages所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。