Tag: amazon sqs

如何处理来自SQS的多个消息?

以下函数将从sqs接收多个消息。 必须处理每条消息并相应地更新数据库。 我可以通过调用worker模块的pull函数来处理单个消息。 但是如何处理多个消息呢? 我无法继续在一个循环中调用worker模块的pull方法,因为它会阻塞这个线程。 这里最好的方法是什么? function checkMessage(){ var params = { QueueUrl : Constant.QUEUE_URL, VisibilityTimeout: 0, WaitTimeSeconds: 20, MaxNumberOfMessages: 10 } sqs.receiveMessage(params,(err,data) => { if(data){ var workerId = uuidV4(); // Now worker will pull the message for processing // The worker response is returned in the callback function Worker.pull(data,workerId,(err,respData) => { if(respData){ // If […]

如何将数据块发送到AWS

根据sqs.sendMessage的节点文档 ,“ 你现在可以发送大小超过256KB(262,144字节)的大型有效载荷消息 ”,所以我的消息碰巧大于这个大小! 这种情况下最好的解决scheme是什么? 有没有发送大量的数据? 谢谢

应该在Nodejs + Koa应用程序中使用AWS SQS消息轮询?

我创build了一个Nodejs + Koa应用程序,它包含我的Koa网站和一个接收来自Koa网站上运行的Angular.js请求的API。 我将使用AWS SQS服务从应用程序推送消息。 这些消息将由AWS Lambda函数处理。 当Lambda函数完成工作时,它会将消息推送到另一个SQS队列。 Nodejs应用程序将轮询SQS队列中的消息,当有消息时,它将向用户发送一个状态报告。 我有红色的SQS文件,它说,不build议在单个线程应用程序中使用长轮询,因为它会阻塞线程。 我想知道是否以5-10秒的时间间隔(可能更less)使用短轮询是一个好主意? 这是否有可能会显着降低网站的性能? 有没有最佳做法呢?

Amazon SQS不向我的工作者实例提供完整的消息

我试图排队和SQS处理请求。 我已经在弹性beanstalk上使用Node.JS worker设置了它,当从另一个框中添加消息时,它自动从SQS获取httppost。 问题是,我无法从http post中获取所有必要的数据,从队列中删除消息。 我看到的唯一数据是我自己在正文中input的消息数据,但没有MessageId或ReceiptHandle。 当我手动调用SQS.receiveMessage(queuerurl,callback)时,我能够获得这些属性,但前提是我没有设置自动http发布。 当我将SQS发布给我的工作人员时,消息立即进入队列,然后进入一个不可见的“正在运行”状态,从而防止使用SQS.receiveMessage(queuerurl,callback)传递任何消息。 任何人都可以解释我在这里失踪? 我是否误解SQS提供的“自动发送消息”? 谢谢您的帮助

Amazon SQS是将分析日志logging数据处理到数据库的好工具吗?

我们有几个nodejs服务器,每个请求的详细信息和有效负载需要logging到SQL Server进行报告和其他业务分析。 请求的数量和服务器之间的需求相似性,我想用一个集中的日志服务来处理这个问题。 我的第一个直觉就是使用像Amazon SQS这样的东西,并让它直接作为SQL Server的缓冲区,或者构build一个小型日志logging服务器,这个服务器可以使SQS引导数据库调用。 这听起来像SQS的一个很好的使用,或者我错过了这个任务广泛使用的工具?

以aws sqs检查传入的消息

我的function如何不断检查传入的消息? 以下函数在收到消息后退出。 考虑到,长时间轮询已经启用队列如何不断检查一个新的消息? function checkMessage(){ var params = { QueueUrl : Constant.QUEUE_URL, VisibilityTimeout: 0, WaitTimeSeconds: 0 } sqs.receiveMessage(params,(err,data) => { if(data){ console.log("%o",data); } }); }

带有aws-sdk的Amazon SQS receiveMessage失速

我正在使用aws-sdk节点模块(据我所知)批准的方式轮询消息。 基本上总结: sqs.receiveMessage({ QueueUrl: queueUrl, MaxNumberOfMessages: 10, WaitTimeSeconds: 20 }, function(err, data) { if (err) { logger.fatal('Error on Message Recieve'); logger.fatal(err); } else { // all good if (undefined === data.Messages) { logger.info('No Messages Object'); } else if (data.Messages.length > 0) { logger.info('Messages Count: ' + data.Messages.length); var delete_batch = new Array(); for (var x=0;x<data.Messages.length;x++) […]

SQS到Lambda + SES

我是Lambda & SQS新手,我尝试创build一个函数来发送SQS服务中排队的邮件,但我不明白如何调用包含send + delete queue方法的进程函数。 在这里,我粘贴我的代码: 'use strict'; const AWS = require('aws-sdk'); const SQS = new AWS.SQS({ apiVersion: '2012-11-05' }); const Lambda = new AWS.Lambda({ apiVersion: '2015-03-31' }); const ses = new AWS.SES({ accessKeyId: "xxxxxxxx", secretAccesskey: "xxxxxxx/xxxxxxxxx" }); const s3 = new AWS.S3({ apiVersion: "2006-03-01", region: "us-west-2" }); const QUEUE_URL = 'https://sqs.us-west-2.amazonaws.com/xxxxxxx/queue'; const PROCESS_MESSAGE […]

节点SQS优先级队列

我需要用node.js和SQS实现一个优先级队列。 这是我第一次与SQS所以我想听听你的意见。 我有三个工作重点:p0,p1和p2,p0是最高的。 p2是最频繁的,之后是p0,最后是p1。 在数字上,我可以粗略地说是这样的: p2 ~= 5p0 p0 >> p1 他们都是独立的工作,所以执行这些工作的顺序并不重要。 我想出了两种可能的解决scheme(这些只是草图,并不真正运行)。 两者都是共同的 var _ = require('lodash'), Promise = require('bluebird'), sqs = require('some-sqs-module'); … module.exports.getJob = function() { return getJobByQueuePriority(0); // or… return getJobByJobPriority(0); } 解决scheme1 使用3个队列,每个优先级一个。 根据各自的优先级从每个队列中抽样1份工作 var Queues = [p0url, p1url, p2url], currentQueueIndex = 0; function getJobByQueuePriority(priority) { return new Promise(function(resolve, reject) […]

使用AWS EB Worker时的自定义标题

我打算在EB中将我的nodejs应用程序部署为Web服务器+工作者组合。 networking服务器将一个json(在请求体内)插入一个SQS队列。 工人然后读队列并做一些工作。 问题是我需要在我的工人头。 有什么办法设置标题的请求,以便我可以在工作人员使用它?