使用Node轮询Amazon SQS队列的最有效方法

Lae*_*ion 9 amazon-sqs amazon-web-services node.js

我的问题很简短,但我觉得很有意思:

我有一个来自Amazon SQS服务的队列,我每秒都在轮询队列.当有消息我处理消息并在处理之后,返回轮询队列.

有没有更好的方法呢?某种触发器?或者您认为哪种方法最好,以及为什么.

谢谢!

小智 15

用于消费来自SQS的消息的有用且易于使用的库是sqs-consumer

const Consumer = require('sqs-consumer');

const app = Consumer.create({
  queueUrl: 'https://sqs.eu-west-1.amazonaws.com/account-id/queue-name',
  handleMessage: (message, done) => {
    console.log('Processing message: ', message);
    done();
  }
});

app.on('error', (err) => {
  console.log(err.message);
});

app.start();
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请将其记录在案.您可以在以下网址找到这些文档:https: //github.com/bbc/sqs-consumer


Mir*_*cea 3

是的,有: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html

您可以将SQS队列配置为具有“接收消息等待时间”并进行长轮询。

因此,您可以将其设置为 10 秒,只有当您有消息或 10 秒超时到期后,呼叫才会返回。在这种情况下,您可以连续轮询队列。