首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空输出的AWS Lambda RequestHandler

空输出的AWS Lambda RequestHandler
EN

Stack Overflow用户
提问于 2019-03-19 10:30:45
回答 1查看 6.2K关注 0票数 9

考虑用Java编写的一个简单的Lambda:

代码语言:javascript
复制
import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class Hello implements RequestHandler<Integer, String>{
    public String handleRequest(int myCount, Context context) {
        return String.valueOf(myCount);
    }
}

处理程序接口被定义为RequestHandler<InputType, OutputType>,但是当我的Lambda对事件作出反应并且只产生一些副作用时,输出类型就没有必要了,我必须编写如下内容:

代码语言:javascript
复制
public class Hello implements RequestHandler<SNSEvent, Void>{
    public Void handleRequest(SNSEvent snsEvent, Context context) {
        ...
        return null;
    }
}

这很烦人。

对于RequestHandler处理程序,有替代void的方法吗?:

代码语言:javascript
复制
public class Hello implements EventHandler<SNSEvent>{
    public void handleEvent(SNSEvent snsEvent, Context context) {
        ...
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-01 10:04:50

您不需要为Lambda入口点实现接口。您的处理程序类可以只是一个POJO,它具有满足在文件中解释需求的签名。

例如:

代码语言:javascript
复制
package example;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.SNSEvent;

public class Hello {
  public void handleEvent(SNSEvent event, Context context) {
    // Process the event
  }
}

在这种情况下,您应该使用example.Hello::handleEvent作为处理程序配置。

另见这个例子来自官方文档

代码语言:javascript
复制
package example;

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

public class Hello {
    public String myHandler(int myCount, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("received : " + myCount);
        return String.valueOf(myCount);
    }
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55238826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档