阿里云函数计算FC-java开发
背景信息
Java语言和Python、Node.js这类脚本型语言不同,该语言需要编译后才能在JVM虚拟机中运行。针对Java语言,函数计算当前具有以下限制:
● 不支持代码编译:仅支持上传已经开发完成、编译打包后的ZIP包或JAR包。函数计算不提供Java的编译能力。
● 不支持在线编辑:由于不支持上传代码,所以不支持在线编辑代码,仅能看到通过上传 JAR 包或通过 OSS 上传两种方法提交代码。
请求处理程序
FC函数的请求处理程序,是函数代码中处理请求的方法。当函数被调用时,函数计算会运行Handler方法处理请求。
可以通过函数计算控制台配置请求处理程序(函数入口),对于Java语言的函数,请求处理程序需配置为[包名].[类名]::[方法名]。例如,包名为example,类型为HelloFC,方法名为handleRequest,则请求处理程序可配置为example.HelloFC::handleRequest。
相关jar包
<dependency><groupId>com.aliyun.fc.runtime</groupId><artifactId>fc-java-core</artifactId><version>1.4.1</version>
</dependency>
函数入口
创建一个maven项目、不需要创建启动类和相关的配置文件,只专注于handleRequest内方法逻辑即可。
// HelloFC.java
package example;import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.PojoRequestHandler;public class HelloFC implements PojoRequestHandler<SimpleRequest, SimpleResponse> {@Overridepublic SimpleResponse handleRequest(SimpleRequest request, Context context) {String message = "Hello, " + request.getFirstName() + " " + request.getLastName();return new SimpleResponse(message);}
}
备注:直接使用自定义的pojo 接收会出现部分字段接收为空的情况,原因不明,如果有问题请把接收对象替换为Object来接受,然后代码逻辑中解析成想要的pojo对象。
上下文
介绍在函数计算中使用Java运行时开发代码时,所涉及的Context(上下文)的相关概念和使用示例。
-
RequestId
本次调用请求的ID。您可以记录下该ID,当出现问题时方便查询。 -
Function
当前调用的函数的一些基本信息,例如函数名、函数入口、函数内存和超时时间。 -
Credentials
函数计算服务通过扮演服务角色而获取的一组临时密钥,其有效时间是36小时。您可以在代码中使用Credentials去访问相应的服务例如OSS,这就避免了您把自己的AccessKey信息编码在函数代码里。 -
Logger
函数计算封装过的logger。 -
Service
当前调用的服务的一些基本信息。 -
OpenTracing
链路追踪的相关信息。
部署相关
引入pom
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SFMETA-INF/*.DSA META-INF/*.RSA
然后控制台执行mvn clean package命令打包。一般打完包项目target文件会出现两个jar、选择后缀带有with-dependencies.jar的jar包部署,这个是有依赖的。
创建函数计算FC服务以及函数
打开控制台,选择创建服务

开启日志、开启允许访问vpc、关闭外网访问。其余默认禁用

选择创建函数、使用内置运行时创建、处理事件请求,通过打包的jar上传

请求处理程序是上传的jar的handleRequest方法包路径

设置项目中使用的环境变量、如kafka地址、其余相关参数
代码获取环境变量示例:String accessKeyId = System.getenv(“ACCESS_KEY_ID”);

测试函数
根据handleRequest方法的请求参数、自定义数据测试函数

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
