全部产品
Search
文档中心

Function Compute:Penanganan Event

更新时间:Jul 02, 2025

Topik ini menjelaskan struktur penanganan event dalam Java dan menyertakan contoh implementasi.

Antarmuka Penanganan

Saat memprogram dalam Java, Anda perlu mengimplementasikan antarmuka yang disediakan oleh Function Compute. Pustaka fc-java-core mendefinisikan dua antarmuka berikut untuk penanganan event:

  • StreamRequestHandler

    Menggunakan aliran untuk menerima data event masukan dan mengembalikan hasil eksekusi. Anda harus membaca data masukan dari aliran masukan dan menulis hasil eksekusi ke aliran keluaran.

  • PojoRequestHandler

    Menggunakan tipe plain old Java object (POJO) untuk menerima event masukan dan mengembalikan respons. Anda dapat menyesuaikan masukan dan keluaran penanganan. Baik masukan maupun keluaran harus bertipe POJO.

StreamRequestHandler

Berikut adalah kode sampel yang menggambarkan implementasi 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());
    }
}           
  • Nama paket dan kelas

    Java memiliki metode eksekusi yang unik dibandingkan bahasa lain karena penggunaan paket. Penanganan dalam kode sampel adalah example.HelloFC::handleRequest, di mana example adalah nama paket Java, HelloFC adalah nama kelas, dan handleRequest adalah metode kelas.

    Catatan Nama paket dan kelas dapat disesuaikan, tetapi harus sesuai dengan nilai parameter Handler dalam konfigurasi fungsi. Untuk informasi lebih lanjut tentang cara mengonfigurasi Handler, lihat Buat sebuah fungsi.
  • Antarmuka yang diimplementasikan

    Kode Anda harus mengimplementasikan antarmuka yang telah ditentukan sebelumnya yang disediakan oleh Function Compute. Dalam contoh ini, StreamRequestHandler diimplementasikan. Parameter inputStream dari penanganan menentukan parameter masukan saat memanggil fungsi, sedangkan parameter outputStream digunakan untuk mengembalikan hasil eksekusi.

  • Konteks

    Parameter Konteks berisi informasi waktu proses dari sebuah fungsi, seperti ID permintaan dan pasangan AccessKey sementara. Parameter ini bertipe com.aliyun.fc.runtime.Context. Untuk informasi lebih lanjut, lihat Konteks.

  • Nilai pengembalian

    Fungsi yang mengimplementasikan StreamRequestHandler mengembalikan hasil eksekusi menggunakan parameter outputStream.

  • Pustaka antarmuka
    Dependensi paket com.aliyun.fc.runtime dapat dirujuk dalam file pom.xml berikut:
    <dependency>
        <groupId>com.aliyun.fc.runtime</groupId>
        <artifactId>fc-java-core</artifactId>
        <version>1.4.1</version>
    </dependency>           

    Anda dapat mengunjungi repositori Maven untuk mendapatkan versi terbaru dari paket fc-java-core.

Sebelum membuat sebuah fungsi, Anda harus mengekstrak kode dan dependensinya fc-java-core ke dalam paket JAR. Untuk informasi lebih lanjut tentang cara mengekstrak kode dan dependensinya, lihat Kompilasi dan deploy paket kode.

PojoRequestHandler

Berikut adalah kode sampel yang menggambarkan implementasi PojoRequestHandler: Objek SimpleRequest adalah objek yang dapat diserialisasi menjadi string JSON, seperti objek tipe POJO.

// 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;
    }
}            

Berikut adalah kode sampel yang menjelaskan parameter event masukan:

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

Program sampel

Pustaka Function Compute mencakup program sampel yang menggunakan berbagai jenis dan antarmuka penanganan. Setiap program sampel menyertakan metode untuk kompilasi dan penerapan yang mudah. Contoh: