このトピックでは、Javaのイベントハンドラーの構造と例について説明します。
Handlerインターフェイス
Javaでプログラムする場合、Function Computeが提供するインターフェイスを実装する必要があります。 fc-java-coreライブラリは、イベントハンドラ用に次の2つのインターフェイスを定義します。
ストリームを使用して入力
イベント
データを受け取り、実行結果を返します。 入力ストリームから入力データを読み取り、実行結果を出力ストリームに書き込む必要があります。普通の旧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ライブラリには、さまざまなハンドラータイプとインターフェイスを使用するサンプルプログラムが含まれています。 各サンプルプログラムには、簡単なコンパイルと展開のためのメソッドが含まれます。 例:
java11-blank-stream-event: ストリーム形式のイベントコールバックを使用します。
java11-blank-pojo-event: POJO形式のイベントコールバックを使用します。