JVM-Sprachen
Sie können die Funktion in verschiedenen JVM-Sprachen wie Kotlin, Groovy oder Scala schreiben, sofern sie diesen Regeln entsprechen:
Die Funktion ist eine öffentliche Klasse, die eine der Funktionsschnittstellen (
HttpFunction
,BackgroundFunction
oderRawBackgroundFunction
) implementiert und über einen öffentlichen Konstruktor ohne Argumente verfügt.Wenn Sie sie aus der Quelle bereitstellen:
- Sie kann aus Maven erstellt werden.
- Die Build-Datei enthält alle Plug-ins zur Erstellung kompilierter Klassen.
Wenn Sie sie aus einer vordefinierten JAR-Datei bereitstellen:
- Sie können diese JAR-Datei mit beliebigen Build-Tools erstellen.
- Die vordefinierte JAR-Datei muss eine FAT-JAR-Datei mit allen Abhängigkeitsklassen sein oder ihr Manifest muss einen
Class-Path
-Eintrag mit den relativen Speicherorten von JAR-Dateien mit diesen Abhängigkeitsklassen enthalten.
Beispiele für HTTP-Funktionen
Wenn Sie Ihre Funktion über eine HTTP(S)-Anfrage aufrufen möchten, verwenden Sie HTTP-Funktionen. In den folgenden Beispielen wird die Nachricht "Hello World!"
ausgegeben.
Kotlin
Groovy
Scala
pom.xml
-Datei für HTTP-Beispiele
Hier sind die pom.xml
-Dateien für die obigen Beispiele:
Kotlin
Groovy
Scala
HTTP-Funktionen bereitstellen
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
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
Ereignisgesteuerte Funktionen – Beispiele
Sie verwenden ereignisgesteuerte Funktionen, wenn die Cloud Run Functions-Funktion indirekt als Reaktion auf ein asynchrones Ereignis wie eine Nachricht in einem Pub/Sub-Thema, eine Änderung in einem Cloud Storage-Bucket oder ein Firebase-Ereignis aufgerufen werden soll.
Es gibt zwei Arten von ereignisgesteuerten Funktionen: Hintergrundfunktionen und CloudEvent-Funktionen. In den JVM-Sprachen werden nur Hintergrundfunktionen unterstützt.
Kotlin
Bei der Entwicklung von Hintergrundfunktionen definieren Sie Klassen für die Ereignisse, die Ihre Funktionen auslösen. Das GSON-Marshalling funktioniert jedoch möglicherweise nicht standardmäßig für Kotlin, wenn Ihre Ereignisklasse nicht bestimmten Richtlinien entspricht.
In der Kotlin-Ereignisklasse müssen Attribute diesen Richtlinien entsprechen:
- Sie können auf
null
gesetzt werden. - Ihnen ist kein Standardwert zugewiesen.
- Sie sind keine delegierten Attribute.
Ein weiterer Ansatz ist, die Ereignisklassen in Java zu erstellen und sie aus der Kotlin-Funktionsklasse heraus zu verwenden.
Groovy
Scala
Hintergrundfunktionen bereitstellen
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
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
Beispiele für Hintergrundfunktionen testen
So können Sie die Beispiele für Hintergrundfunktionen testen:
Veröffentlichen Sie eine Nachricht in Ihrem Pub/Sub-Thema, um die Funktion auszulösen:
gcloud pubsub topics publish my-topic --message Flurry
Sehen Sie sich die Logs an:
gcloud functions logs read --limit 10
Sie sollten in etwa so etwas mit einer Nachricht mit dem Namen sehen, den Sie im Pub/Sub-Thema veröffentlicht haben:
D my-function ... Function execution started
I my-function ... Hello Flurry!
D my-function ... Function execution took 39 ms, finished with status: 'ok'