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 dal codice sorgente:
- Può essere compilato da Maven.
- Il file di compilazione contiene tutti i plug-in per produrre classi compilate.
Se esegui il deployment da un file JAR precompilato:
- Puoi utilizzare qualsiasi strumento di compilazione per produrre questo file JAR.
- Il file JAR precompilato deve essere un file JAR con tutte le classi di dipendenza oppure il file manifest deve contenere una voce
Class-Path
con le posizioni relative dei file JAR contenenti queste classi di dipendenza.
Esempi di funzioni HTTP
Utilizza le funzioni HTTP quando vuoi richiamare la funzione tramite una richiesta HTTP(S). Gli esempi seguenti stampano il messaggio
"Hello World!"
Kotlin
Groovy
Scala
File pom.xml
per esempi HTTP
Ecco i file pom.xml
per gli esempi precedenti:
Kotlin
Groovy
Scala
Esegui il deployment delle funzioni HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Esempi di funzioni basate su eventi
Utilizza le funzioni basate su eventi quando vuoi che la funzione Cloud Run venga richiamata indirettamente in risposta a un evento asincrono, ad esempio un messaggio in un argomento Pub/Sub, una modifica in un bucket Cloud Storage o un evento Firebase.
Esistono due tipi di funzioni basate su eventi: funzioni in background e funzioni CloudEvent. I linguaggi JVM supportano solo le funzioni in background.
Kotlin
Quando sviluppi funzioni in background, definisci le classi per gli eventi che attivano le funzioni. Tuttavia, il marshalling GSON potrebbe non funzionare subito per Kotlin, se la classe dell'evento non segue determinate 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à delegate.
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 java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --runtime java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --runtime java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Prova 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 qualcosa di simile, con un messaggio che include il nome che hai pubblicato 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'