我的问题很简短,但我觉得很有意思:
我是来自Amazon SQS服务的队列,我每秒都会轮询队列。如果有消息我处理消息并在处理完之后返回轮询队列。
有没有更好的方法呢?某种触发器?或者您认为哪种方法最好,以及为什么。
谢谢!
答案 0 :(得分:9)
用于消费来自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();
如果您需要更多信息,请将其记录在案。您可以在以下位置找到文档: https://github.com/bbc/sqs-consumer
答案 1 :(得分:3)
是的,有: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html
您可以将SQS队列配置为具有“接收消息等待时间”并进行长轮询。
因此您可以将其设置为10秒,只有在您收到消息或10秒超时到期后,呼叫才会返回。您可以在此方案中连续轮询队列。
答案 2 :(得分:1)
如Mircea所述,长期投票是一种选择。
当您要求“触发器”时,我相信您正在寻找除自行连续轮询SQS之外的其他内容。如果是这种情况,我建议您查看AWS Lambda。它允许您将代码放入云中,这会自动在您配置的事件上触发,例如SNS事件,推送到S3的文件等。