首页 > 解决方案 > SQS lambda 集成- Lambda 没有收到任何消息

问题描述

我有读取 sqs 消息并处理它的 lambda 函数。我已经为集成实现了一个触发器(lambda 触发器)。

每次我将消息推送到队列时,都会调用 Lambda,从日志中我了解到所有消息都处于飞行状态

 String queueUrl = sqs.getQueueUrl("test_queue").getQueueUrl();
       final ReceiveMessageRequest receiveMessageRequest = new 
  ReceiveMessageRequest(queueUrl);
        int count = getMessagesCount(sqs);

        while(messagesCount > 0) {
            List<Message> messages = 

sqs.receiveMessage(receiveMessageRequest).getMessages();

 logger.info("No.of messages in queue :{} ", count);

查看日志在此处输入图像描述

Lambda 超时和 sqs 可见性超时为 20 分钟。SQS配置如下

在此处输入图像描述

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


当您将 SQS 与 Lambda 集成使用时,AWS 会处理轮询队列中的消息并将它们发送到 Lambda 函数。该消息正在传输中,因为 AWS 已经为您检索了该消息。你不应该打电话sqs.receiveMessage。您甚至根本不需要使用 SQS API。消息在event调用时传递给您的 Lambda 函数的对象中。您需要做的就是处理消息。


推荐阅读