Bahasa JVM
Anda dapat menulis fungsi Anda menggunakan bahasa JVM yang berbeda (seperti Kotlin, Groovy, atau Scala) selama mematuhi aturan berikut:
Fungsi ini adalah class publik yang menerapkan salah satu antarmuka fungsi (
HttpFunction
,BackgroundFunction
, atauRawBackgroundFunction
) dan memiliki konstruktor publik tanpa argumen.Jika Anda men-deploy dari sumber:
- Aplikasi ini dapat dibuat dari Maven.
- File build berisi semua plugin untuk menghasilkan class yang dikompilasi.
Jika Anda men-deploy dari JAR bawaan:
- Anda bisa menggunakan alat build apa pun untuk menghasilkan JAR ini.
- JAR bawaan harus berupa Fat JAR dengan semua class dependensinya, atau
manifesnya harus berisi
entri
Class-Path
dengan lokasi relatif jar yang berisi class dependensi tersebut.
Contoh fungsi HTTP
Anda menggunakan fungsi HTTP ketika ingin memanggil fungsi melalui permintaan HTTP(S). Contoh berikut menampilkan pesan
"Hello World!"
Kotlin
Meriah
Scala
File pom.xml
untuk contoh HTTP
Berikut adalah file pom.xml
untuk contoh di atas:
Kotlin
Meriah
Scala
Men-deploy fungsi HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Meriah
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Contoh fungsi berbasis peristiwa
Anda menggunakan fungsi berbasis peristiwa saat ingin fungsi Cloud Run dipanggil secara tidak langsung sebagai respons terhadap peristiwa asinkron, seperti pesan pada Topik Pub/Sub, perubahan dalam bucket Cloud Storage, atau peristiwa Firebase.
Ada dua jenis fungsi berbasis peristiwa: fungsi latar belakang dan fungsi CloudEvent. Bahasa JVM hanya mendukung fungsi latar belakang.
Kotlin
Saat mengembangkan fungsi latar belakang, Anda menentukan class untuk peristiwa yang memicu fungsi Anda. Namun, marshalling GSON mungkin tidak langsung berfungsi untuk Kotlin, jika class peristiwa Anda tidak mengikuti panduan tertentu.
Di class peristiwa Kotlin, properti harus mematuhi panduan ini:
- Parameter dapat disetel ke
null
. - Kolom tersebut tidak memiliki nilai default yang ditetapkan padanya.
- Properti tersebut bukan properti delegasi.
Pendekatan lainnya adalah membuat class peristiwa di Java, dan menggunakannya dari class fungsi Kotlin Anda.
Meriah
Scala
Men-deploy fungsi latar belakang
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Meriah
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Menguji contoh latar belakang
Anda dapat menguji contoh latar belakang sebagai berikut:
Publikasikan pesan ke Topik Pub/Sub untuk memicu fungsi Anda:
gcloud pubsub topics publish my-topic --message Flurry
Lihat log:
gcloud functions logs read --limit 10
Anda akan melihat sesuatu seperti ini, dengan pesan yang menyertakan nama yang Anda publikasikan ke topik Pub/Sub:
D my-function ... Function execution started
I my-function ... Hello Flurry!
D my-function ... Function execution took 39 ms, finished with status: 'ok'