すべてのプロダクト
Search
ドキュメントセンター

Function Compute:イベントハンドラー

最終更新日:Sep 02, 2024

このトピックでは、Javaのイベントハンドラーの構造と例について説明します。

Handlerインターフェイス

Javaでプログラムする場合、Function Computeが提供するインターフェイスを実装する必要があります。 fc-java-coreライブラリは、イベントハンドラ用に次の2つのインターフェイスを定義します。

  • StreamRequestHandler

    ストリームを使用して入力イベントデータを受け取り、実行結果を返します。 入力ストリームから入力データを読み取り、実行結果を出力ストリームに書き込む必要があります。

  • PojoRequestHandler

    普通の旧Javaオブジェクト (POJO) 型を使用して入力イベントを受け取り、応答を返します。 ハンドラーの入力と出力をカスタマイズできます。 入力と出力の両方がPOJOタイプでなければなりません。

StreamRequestHandler

次のサンプルコードは、StreamRequestHandlerの例を示します。

package example;

import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.StreamRequestHandler;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class HelloFC implements StreamRequestHandler {

    @Override
    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
        outputStream.write(new String("hello world").getBytes());
    }
}           
  • パッケージとクラス名

    Javaは、パッケージのために実行方法が他の言語とは異なります。 サンプルコードのハンドラーはexample.HelloFC::handleRequestで、exampleはJavaパッケージ名、HelloFCはクラス名、handleRequestはクラスメソッドを指定します。

    説明

    パッケージ名とクラス名はカスタマイズできます。 ただし、関数設定のHandlerパラメーターの値と一致している必要があります。 Handlerの設定方法の詳細については、「関数の作成」をご参照ください。

  • 実装インターフェイス

    コードは、Function Computeが提供する定義済みのインターフェイスを実装する必要があります。 上記の例では、StreamRequestHandlerが実装されています。 ハンドラーのinputStreamパラメーターは、関数を呼び出すときに入力パラメーターを指定し、outputStreamパラメーターを使用して実行結果を返します。

  • 背景

    Contextパラメーターには、リクエストIDや一時的なAccessKeyペアなど、関数の実行時情報が含まれます。 このパラメーターは、com.aliyun.fc.ru ntime.Contextタイプです。 詳細は、「コンテキスト」をご参照ください。

  • 戻り値

    StreamRequestHandlerを実装する関数は、outputStreamパラメーターを使用して実行結果を返します。

  • インタフェースライブラリ

    com.aliyun.fc.ru ntimeパッケージの依存関係は、以下

    <dependency>
        <groupId>com.aliyun.fc.runtime</groupId>
        <artifactId>fc-java-core</artifactId>
        <version>1.4.1</version>
    </dependency>           

    Mavenリポジトリにアクセスして、fc-java-coreパッケージの最新バージョンを取得できます。

関数を作成する前に、コードとその依存関係fc-java-coreをJARパッケージに圧縮する必要があります。 コードとその依存関係を圧縮する方法の詳細については、「コードパッケージのコンパイルとデプロイ」をご参照ください。

PojoRequestHandler

次のサンプルコードは、PojoRequestHandlerの例を示しています。SimpleRequestのオブジェクトは、POJO型のオブジェクトなど、JSON文字列にシリアル化できるオブジェクトです。

// HelloFC.java
package example;

import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.PojoRequestHandler;

public class HelloFC implements PojoRequestHandler<SimpleRequest, SimpleResponse> {

    @Override
    public SimpleResponse handleRequest(SimpleRequest request, Context context) {
        String message = "Hello, " + request.getFirstName() + " " + request.getLastName();
        return new SimpleResponse(message);
    }
}            
// SimpleRequest.java
package example;

public class SimpleRequest {
    String firstName;
    String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public SimpleRequest() {}
    public SimpleRequest(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}            
// SimpleResponse.java
package example;

public class SimpleResponse {
    String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public SimpleResponse() {}
    public SimpleResponse(String message) {
        this.message = message;
    }
}            

次のサンプルコードでは、入力イベントパラメーターについて説明します。

{
  "firstName": "FC",
  "lastName": "aliyun"
}            

サンプルプログラム

Function Computeライブラリには、さまざまなハンドラータイプとインターフェイスを使用するサンプルプログラムが含まれています。 各サンプルプログラムには、簡単なコンパイルと展開のためのメソッドが含まれます。 例: