Linguaggi JVM
È possibile scrivere la funzione utilizzando diversi linguaggi JVM (ad esempio Kotlin, Groovy o Scala) purché siano conformi alle seguenti regole:
La funzione è una classe pubblica che implementa una delle interfacce di funzione (
HttpFunction
,BackgroundFunction
oRawBackgroundFunction
) e ha un costruttore pubblico senza argomenti.Se esegui il deployment dall'origine:
- Può essere compilato da Maven.
- Il file di build contiene tutti i plug-in per la generazione delle classi compilate.
Se esegui il deployment da un JAR predefinito:
- Per produrre questo JAR, puoi utilizzare qualsiasi strumento di creazione.
- Il JAR predefinito deve essere un JAR Fat con tutte le sue classi di dipendenza, oppure
il suo manifest deve contenere
Class-Path
voce con le posizioni relative dei jar contenenti quelle dipendenze .
Esempi di funzioni HTTP
Puoi utilizzare le funzioni HTTP per richiamare
della funzione tramite una richiesta HTTP(S). Gli esempi seguenti mostrano il messaggio
"Hello World!"
Kotlin
Alla moda
Scala
File pom.xml
per esempi HTTP
Ecco i file pom.xml
per gli esempi precedenti:
Kotlin
Alla moda
Scala
Deployment delle funzioni HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Alla moda
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
Esempi di funzioni basate su eventi
Puoi utilizzare le funzioni basate su eventi per richiamare la tua funzione Cloud Run indirettamente in risposta a un evento asincrono, come un messaggio su una un argomento Pub/Sub, una modifica in un bucket Cloud Storage o un evento Firebase.
Esistono due tipi di funzioni basate su eventi: in background e CloudEvent. I linguaggi JVM supportano solo le funzioni in background.
Kotlin
Durante lo sviluppo delle funzioni in background, definisci le classi per gli eventi attivare le tue funzioni. Tuttavia, il marshalling di GSON potrebbe non funzionare riquadro per Kotlin, se la classe dell'evento non segue alcune linee guida.
Nella classe di eventi Kotlin, le proprietà devono essere conformi a queste linee guida:
- Possono essere impostati su
null
. - Non hanno un valore predefinito assegnato.
- Non sono proprietà delegati.
Un altro approccio consiste nel creare le classi di eventi in Java e utilizzarle dalla classe di funzioni Kotlin.
Groovy
Scala
Esegui il deployment delle funzioni in background
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Alla moda
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
Testa gli esempi di sfondo
Puoi testare gli esempi di sfondo nel seguente modo:
Pubblica un messaggio nell'argomento Pub/Sub per attivare la funzione:
gcloud pubsub topics publish my-topic --message Flurry
Esamina i log:
gcloud functions logs read --limit 10
Dovresti vedere una schermata simile a questa, con un messaggio che include il nome pubblicate nell'argomento 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'