文档首页/ 函数工作流 FunctionGraph/ 开发指南/ Java/ 开发事件函数/ Java函数开发指南(使用IDEA工具maven项目)
更新时间:2024-10-30 GMT+08:00
分享

Java函数开发指南(使用IDEA工具maven项目)

开发Java函数,以下给出Demo示例步骤:

  1. 创建函数工程

    1. 配置idea,创建maven工程,如图1所示。
      图1 创建工程
    2. 添加工程依赖。

      根据Java SDK下载提供的SDK地址,下载JavaRuntime SDK到本地开发环境解压,如图2所示。

      图2 下载SDK解压
    3. 将zip中的Runtime-2.0.5.jar拷贝到本地目录,例如d:\\runtime中,在命令行窗口执行如下命令安装到本地的maven仓库中。
      mvn install:install-file -Dfile=d:\runtime\RunTime-2.0.5.jar -DgroupId=RunTime -DartifactId=RunTime -Dversion=2.0.5 -Dpackaging=jar
    4. 在pom.xml中配置dependency,如下所示。
      <dependency>
      <groupId>Runtime</groupId>
      <artifactId>Runtime</artifactId>
      <version>2.0.5</version>
      </dependency>
    5. 配置其他的依赖包,以obs依赖包为例,如下所示。
      <dependency>
      <groupId>com.huaweicloud</groupId>
      <artifactId>esdk-obs-java</artifactId>
      <version>3.21.4</version>
      </dependency>
    6. 在pom.xml中添加插件用来将代码和依赖包打包到一起。
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <mainClass>com.huawei.demo.TriggerTests</mainClass>
                </manifest>
              </archive>
              <finalName>${project.name}</finalName>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals><goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

    请把mainClass替换为真实的类。

  2. 创建本地函数

    1. 创建包com.huawei.demo,并在包下创建TriggerTests类,如图图3所示。
      图3 创建TriggerTests类
    2. 在TriggerTests.java中定义函数运行入口,示例代码如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      package com.huawei.demo;
      
      import java.io.UnsupportedEncodingException;
      import java.util.HashMap;
      import java.util.Map;
      
      import com.huawei.services.runtime.Context;
      import com.huawei.services.runtime.entity.apig.APIGTriggerEvent;
      import com.huawei.services.runtime.entity.apig.APIGTriggerResponse;
      import com.huawei.services.runtime.entity.dis.DISTriggerEvent;
      import com.huawei.services.runtime.entity.dms.DMSTriggerEvent;
      import com.huawei.services.runtime.entity.lts.LTSTriggerEvent;
      import com.huawei.services.runtime.entity.smn.SMNTriggerEvent;
      import com.huawei.services.runtime.entity.timer.TimerTriggerEvent;
      
      public class TriggerTests {
          public APIGTriggerResponse apigTest(APIGTriggerEvent event, Context context){
              System.out.println(event);
              Map<String, String> headers = new HashMap<String, String>();
              headers.put("Content-Type", "application/json");
              return new APIGTriggerResponse(200, headers, event.toString());
          }
      
          public String smnTest(SMNTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String dmsTest(DMSTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String timerTest(TimerTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String disTest(DISTriggerEvent event, Context context) throws UnsupportedEncodingException{
              System.out.println(event);
              System.out.println(event.getMessage().getRecords()[0].getRawData());
              return "ok";
          }
      
          public String ltsTest(LTSTriggerEvent event, Context context) throws UnsupportedEncodingException {
              System.out.println(event);
              event.getLts().getData();
              System.out.println("raw data: " + event.getLts().getRawData());
              return "ok";
          }
      }
      

      当函数的事件源是APIG时,相关约束条件请参考Base64解码和返回结构体的说明

  3. 工程编译打包。

    在命令行窗口执行如下命令进行编译打包。

    mvn package assembly:single

    编译完成后在target目录会生成一个demo-jar-with-dependencies.jar。

  4. 创建java函数,上传jar包,如图4所示。

    图4 创建函数

  5. 测试函数

    1. 创建测试事件。

      在事件模板中选择“timer-event-template”,并保存。

    2. 单击“测试”并执行。

      函数执行结果分为三部分,分别为函数返回(由callback返回)、执行摘要、日志输出(由System.out.println()方法获取的日志方法输出)。

相关文档