【发布时间】:2018-10-29 22:38:36
【问题描述】:
我有一个 FIFO 队列,有超过 2 百万条消息可用。 我想用 lambda 函数处理它们,但 10 次轮询消息中有 9 次得到队列为空的回复。这绝对不是真的。我试图更改为长轮询,但没有帮助。 这是我用于轮询消息的代码。
import { create as listenToSqsQueue } from "sqs-consumer";
listenToSqsQueue({
queueUrl: Config.aws.sqsurl,
handleMessage: async function (message, done){
// do some work with `message`s
Promise.resolve(invokePoller(functionName, message, callback));
done();
}
,
batchSize: 10
}).on("empty", function() {
callback(undefined, "Queue is empty");
}).on("error", function(error: Error, message: any) {
console.error(error, message);
callback(error)
}).start();
【问题讨论】:
-
有多少消息在发送中?通常,报告此类情况的人未能说明 SQS 在每个消息组中实施严格的排序。 No group without messages in flight 意味着现在没有消息可用,因为在这种情况下传递消息意味着传递无序。
-
@Michael-sqlbot 是的,你是对的,我错过了对于 FIFO 队列,具有相同 messageId 的消息将按顺序传递的观点。谢谢你的回答
标签: node.js aws-lambda amazon-sqs fifo