שפות JVM
אפשר לכתוב את הפונקציה בשפות שונות של JVM (כמו Kotlin, Groovy או Scala), כל עוד הן עומדות בכללים הבאים:
הפונקציה היא מחלקה ציבורית שמיישמת אחד מממשקי הפונקציות (
HttpFunction,BackgroundFunctionאוRawBackgroundFunction) ויש לה בנאי ציבורי ללא ארגומנטים.אם אתם מבצעים פריסה מהמקור:
- אפשר ליצור אותו מ-Maven.
- קובץ ה-build מכיל את כל הפלאגינים ליצירת מחלקות שעברו קומפילציה.
אם אתם פורסים מ-JAR מוכן מראש:
- אפשר להשתמש בכל כלי בנייה כדי ליצור את קובץ ה-JAR הזה.
- קובץ ה-JAR שנוצר מראש צריך להיות Fat JAR עם כל מחלקות התלות שלו, או שהמניפסט שלו צריך להכיל רשומה
Class-Pathעם המיקומים היחסיים של קובצי ה-JAR שמכילים את מחלקות התלות האלה.
דוגמאות לפונקציות HTTP
משתמשים בפונקציות HTTP כשרוצים להפעיל את הפונקציה באמצעות בקשת HTTP(S). בדוגמאות הבאות מוצגת ההודעה "Hello World!"
Kotlin
Groovy
Scala
קובץ pom.xml לדוגמאות של HTTP
אלה קובצי pom.xml לדוגמה:
Kotlin
Groovy
Scala
פריסת פונקציות HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
דוגמאות לפונקציות מבוססות-אירועים
משתמשים בפונקציות מבוססות-אירועים כשרוצים להפעיל את פונקציית Cloud Run באופן עקיף בתגובה לאירוע אסינכרוני, כמו הודעה בנושא Pub/Sub, שינוי בקטגוריה של Cloud Storage או אירוע Firebase.
יש שני סוגים של פונקציות מבוססות-אירועים: פונקציות ברקע ופונקציות CloudEvent. השפות של JVM תומכות רק בפונקציות ברקע.
Kotlin
כשמפתחים פונקציות ברקע, מגדירים מחלקות לאירועים שמפעילים את הפונקציות. עם זאת, יכול להיות ש-GSON marshalling לא יעבוד ב-Kotlin אם מחלקת האירועים לא עומדת בהנחיות מסוימות.
במחלקת האירועים של Kotlin, המאפיינים צריכים לעמוד בהנחיות הבאות:
- אפשר להגדיר אותם כ-
null. - לא מוקצה להם ערך ברירת מחדל.
- הן לא מאפיינים של נציגים.
גישה נוספת היא ליצור את מחלקות האירועים ב-Java ולהשתמש בהן ממחלקת הפונקציות של Kotlin.
Groovy
Scala
פריסת פונקציות הרקע
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
דוגמאות לבדיקה של הרקע
כדי לבדוק את דוגמאות הרקע:
מפרסמים הודעה בנושא Pub/Sub כדי להפעיל את הפונקציה:
gcloud pubsub topics publish my-topic --message Flurry
מעיינים ביומנים:
gcloud functions logs read --limit 10
אמורה להופיע הודעה דומה לזו שבהמשך, עם השם שפרסמתם בנושא 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'