Linguaggi JVM
È possibile scrivere la funzione utilizzando diversi linguaggi JVM (come 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 dominio pubblico costruttore 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 dipendenze 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 usare le funzioni basate su eventi per richiamare la tua Cloud Function 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. Le lingue JVM supportano solo 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 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 la classe della 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 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'