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 della funzione (
HttpFunction
,BackgroundFunction
oRawBackgroundFunction
) e ha un costruttore pubblico senza argomento.Se esegui il deployment dall'origine:
- Può essere creata da Maven.
- Il file di compilazione contiene tutti i plug-in per produrre classi compilate.
Se esegui il deployment da un JAR predefinito:
- Puoi utilizzare qualsiasi strumento di creazione per produrre questo JAR.
- 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 contenenti queste classi di dipendenza.
Esempi di funzioni HTTP
Puoi utilizzare le funzioni HTTP quando vuoi richiamare la tua funzione tramite una richiesta HTTP(S). I seguenti esempi restituiscono il messaggio
"Hello World!"
Kotlin
trendy
Scala
File pom.xml
per esempi HTTP
Ecco i file pom.xml
per gli esempi precedenti:
Kotlin
trendy
Scala
Deployment delle funzioni HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
trendy
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 se vuoi che la funzione 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. Le lingue delle 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 da subito per Kotlin, se la tua classe dell'evento non rispetta determinate linee guida.
Nella tua classe di evento Kotlin, le proprietà devono essere conformi a queste linee guida:
- Possono essere impostati su
null
. - Non viene assegnato loro un valore predefinito.
- Non sono proprietà delegate.
Un altro approccio è creare le classi di evento in Java e utilizzarle dalla tua classe di funzione Kotlin.
trendy
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
trendy
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
Testare gli esempi in background
Puoi testare gli esempi in background nel seguente modo:
Pubblica un messaggio nel tuo argomento Pub/Sub per attivare la funzione:
gcloud pubsub topics publish my-topic --message Flurry
Esamina i log:
gcloud functions logs read --limit 10
Il risultato dovrebbe essere simile al seguente, 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'