【问题标题】:Why is my lambda function not able to consume messages sent by SQS in AWS?为什么我的 lambda 函数无法使用 AWS 中 SQS 发送的消息?
【发布时间】:2020-07-26 02:54:46
【问题描述】:

我正在使用 AWS Lambda 函数来使用在 AWS SQS 上收到的消息。 lambda 函数将进一步调用我的服务,但现在,我试图获取在 SQS 队列上发送的消息。我在 SQS 中创建了一个标准队列,在 Java 中创建了一个 Lambda 函数。我在我的 Eclipse IDE 中创建了一个新的 lambda 项目,这是我的功能:

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class LambdaFunctionHandler implements RequestHandler<String, String> {

    @Override
    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);
        return (String) input;
    }
}

该文件没有显示任何错误。我将项目导出为 .jar 文件并将 jar 文件上传到我的 lambda 函数。我还在我的 lambda 函数 (packageName.className) 中指定了处理程序。如果我测试 lambda 函数,它执行得很好,但是当我向 SQS 发送消息时,它会增加 message flight 中的消息数量,我已经阅读的是消费者未使用的消息,在我的情况下是 lambda。

如果还有什么需要请告诉我。

【问题讨论】:

  • 您是否检查过 CloudWatch 日志中的 lambda?消息正在传输中,因为您的 lambda 可能出错了。
  • @Marcin CloudWatch 上没有显示任何内容。 No Log Groups To Show.
  • 所以你的 lambda 没有 CW 的权限。添加它们,您应该会看到它的日志组。
  • 查看我的编辑。我有这两个权限。是否还有其他需要添加的权限? @Marcin这3个动作来自我创建的前一个函数,但是当我创建这个函数时我从日志中删除了它。我做错什么了吗?
  • 所以发送更多的sqs消息。如果您的 lambda 具有 CW 权限,则应为新的函数调用重新创建日志组。

标签: amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

Amazon 不会反序列化字符串,因此当我使用 Map 作为输入时,它运行良好。

public String handleRequest(Map<String,Object> input, Context context) {
    context.getLogger().log("Your Input is: " +input);
    System.out.println(input);
    return  "Executed Successfully";
}

我从Lionel Port's solution 读到这个。谢谢。

【讨论】:

    【解决方案2】:

    将 SQSEvent 事件作为参数,将您的 aws SQS 与 Java 连接起来。您可以使用 SQSMessage 类获取消息并查看您的消息。请参阅以下代码:

    public String handleRequest(SQSEvent event, Context context){
        for(SQSMessage msg : event.getRecords()){
            System.out.println(msg.getBody());
            System.out.println("MSG" + msg.getBody());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2020-02-18
      • 2016-11-06
      • 2018-08-03
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多