试图从 sqs 触发我的 lambda 函数,它正在触发 lambda 但队列中没有消息

Sne*_*eha 1 amazon-sqs amazon-web-services aws-lambda

我试图从 SQS 延迟队列触发我的 lambda 函数,它正在触发 lambda 但队列中没有消息。即使当我检查 aws 控制台时,也会出现消息延迟,并且延迟时间结束时。它触发了我的 lambda 函数,但是当我的 lambda 尝试获取消息列表时,它显示为空列表。另一件事是,当我在此之后删除 lambda 触发器时,每当我将消息发送到队列时,它都会显示延迟时间后可用的消息。所以它按预期工作,没有向 lambda 添加触发器,但是当我添加触发器时,我的 lambda 没有收到任何要处理的消息。

我尝试了各种方法,但没有任何效果。我的默认可见性超时:30 秒和接收消息等待时间:0 秒和传递延迟:10 秒。

使用下面的代码从 sqs 获取消息,它总是返回空列表:

final ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(SQS_URL);
        final List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
Run Code Online (Sandbox Code Playgroud)

我是 aws 的新手,不知道该怎么做,因为这个问题陷入了僵局。请帮忙。

Joh*_*ein 8

如果您已将 Amazon SQS 队列配置为触发 AWS Lambda 函数,则该函数不应调用ReceiveMessage().

相反,消息会自动从 SQS 队列中获取并通过event参数传递给 Lambda 函数。

有关示例代码,请参阅:示例 Amazon SQS 函数代码 - AWS Lambda

Lambda 函数应该遍历传递给函数的消息。当该功能结束时,消息将被自动删除。