我已经阅读了关于Quarkus的AWS Lambda文档,它看起来非常有趣。
我想要部署一些Quarkus本地lambda到AWS,就像这里所解释的那样https://aws.amazon.com/blogs/architecture/field-notes-optimize-your-java-application-for-aws-lambda-with-quarkus/。我的目标是利用Java生态系统的能力(而不是基于JS NPM的Lambda),并且仍然具有非常低的冷启动和热执行时间,以降低AWS计费。
我不想编写将请求映射到正确的“控制器”方法的逻辑,例如:
我想要部署一些Quarkus本地lambda到AWS,就像这里所解释的那样https://aws.amazon.com/blogs/architecture/field-notes-optimize-your-java-application-for-aws-lambda-with-quarkus/。我的目标是利用Java生态系统的能力(而不是基于JS NPM的Lambda),并且仍然具有非常低的冷启动和热执行时间,以降低AWS计费。
我不想编写将请求映射到正确的“控制器”方法的逻辑,例如:
[...]
switch (httpMethod) {
case "GET":
Map<String, String> queryStringParameters = request.getQueryStringParameters();
String userId = null;
if (pathParameters != null)
userId = pathParameters.get("userId");
else if (queryStringParameters != null)
userId = queryStringParameters.get("userId");
if (userId == null || userId.length() == 0) {
LOGGER.info("Getting all users");
userList = userService.findAll();
LOGGER.info("GET: " + userList);
try {
result = mapper.writeValueAsString(userList);
} catch (JsonProcessingException exc) {
LOGGER.error(exc);
}
[...]
对我来说,编写代码成本太高且容易出错,这是一个绊脚石。
相反,我想利用类似于此处描述的机制:简而言之,Lambda处理程序将Lambda输入数据(流、上下文等)映射到HTTP请求,JAX-RS实现完成其余工作,或者类似的操作,我的职责不是完全清楚。
这非常有趣,因为您可以像往常一样编写控制器,使用注释和所有内容,而您的Lambda保持非常简单,只需映射对象:
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
throws IOException {
handler.proxyStream(inputStream, outputStream, context);
Jersey、Spring和其他框架是否存在ProxyStream实现,Quarkus JAX-RS实现是否存在类似的ProxyImplementation(Jackson)?