Linguaggi JVM
È possibile scrivere la funzione utilizzando linguaggi JVM diversi (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 argomento.Se esegui il deployment dall'origine:
- Può essere creato 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 una voce
Class-Path
con le posizioni relative dei jar che contengono quelle classi di dipendenza.
Esempi di funzioni HTTP
Puoi utilizzare le funzioni HTTP per richiamare la funzione tramite una richiesta HTTP(S). Gli esempi seguenti generano 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 quando vuoi che la tua Cloud Function venga richiamata indirettamente in risposta a un evento asincrono, ad esempio un messaggio su 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 funzioni in background.
Kotlin
Durante lo sviluppo delle funzioni in background, definisci le classi per gli eventi che attivano le funzioni. Tuttavia, il marshalling di GSON potrebbe non funzionare subito per Kotlin se la classe dell'evento non segue determinate linee guida.
Nella classe di evento Kotlin, le proprietà devono essere conformi alle seguenti linee guida:
- Possono essere impostate su
null
. - Non gli è stato assegnato un valore predefinito.
- Non sono proprietà delegati.
Un altro approccio consiste nel creare le classi di eventi in Java e utilizzarle dalla tua classe di funzione Kotlin.
Alla moda
Scala
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 in background 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 a questo, 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'