Amazon web services SQS ReceiveMessage成功,但获取空消息

Amazon web services SQS ReceiveMessage成功,但获取空消息,amazon-web-services,aws-lambda,amazon-sqs,Amazon Web Services,Aws Lambda,Amazon Sqs,我在lambda中有以下代码来接收SQS消息: 当我向SQS中注入消息时,lambda会触发,但会显示数据。消息为空 函数接收消息(回调) { 变量参数={ QueueUrl:TASK\u QUEUE\u URL, MaxNumberOfMessages:2, 等待时间秒:1, 属性名称:[“全部”] }; SQS.receiveMessage(参数、函数(错误、数据) { 如果(错误) { console.error(err,err.stack); 回调(err); } else if(da

我在lambda中有以下代码来接收SQS消息: 当我向SQS中注入消息时,lambda会触发,但会显示数据。消息为空

函数接收消息(回调)
{
变量参数={
QueueUrl:TASK\u QUEUE\u URL,
MaxNumberOfMessages:2,
等待时间秒:1,
属性名称:[“全部”]
};
SQS.receiveMessage(参数、函数(错误、数据)
{
如果(错误)
{
console.error(err,err.stack);
回调(err);
}
else if(data.Messages==null)
{
日志(“空消息”,数据);
回调(null,null);
}
其他的
{
回调(null,data.Messages);
}
});
}
当Lambda服务的一个组件在数组
事件中实际轮询队列并将消息负载传递给函数调用时。记录将包含队列中的一条或多条消息。消息在队列中暂时不可见(它们处于“飞行中”)

在此应用程序中,您不需要直接与SQS交互

处理消息并成功退出Lambda函数,Lambda轮询器会自动从队列中删除刚刚提供给您的所有消息


如果引发异常,您刚收到的所有消息都会被设置为在队列中可见。

请参阅Lambda函数是如何调用的?我想你不是因为这只适用于非先进先出。。。但是如果您是,消息已经在
事件中了
——您不会使用
receiveMessages()
。队列中确实有可用的消息吗?如果队列为空,您所描述的听起来像是正确的行为。@Michael sqlbot谢谢-这确实是问题所在。我将队列用作事件源,然后对其执行receivemessage(),这是不需要的。我