Linguagens do JVM
É possível gravar sua função usando diferentes linguagens do JVM (como Kotlin, Groovy ou Scala), desde que estejam em conformidade com as seguintes regras:
A função é uma classe pública que implanta uma das interfaces de função (
HttpFunction
,BackgroundFunction
ouRawBackgroundFunction
) e tem um construtor público sem argumentos.Se você estiver implantando a partir da origem:
- Ele pode ser criado a partir do Maven.
- O arquivo de build contém todos os plug-ins para produzir classes compiladas.
Se você estiver implantando a partir de um JAR pré-criado:
- Use qualquer ferramenta de criação para produzir esse JAR.
- O JAR pré-criado precisa ser um Fat JAR com todas as classes de dependência, ou seu manifesto precisa conter uma entrada
Class-Path
com os locais relativos dos jars que contêm essas classes de dependência.
Exemplos de função HTTP
Você usa funções HTTP para invocar sua função por meio de uma solicitação HTTP(S). Os exemplos a seguir geram a mensagem "Hello World!"
Kotlin
Groovy
Scala
Arquivo pom.xml
para ver exemplos de HTTP
Veja os arquivos pom.xml
dos exemplos acima:
Kotlin
Groovy
Scala
Como implantar as funções HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
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
Exemplos de função orientada a eventos
Use funções orientadas a eventos quando quiser que sua função do Cloud Run seja invocada indiretamente em resposta a um evento assíncrono, como uma mensagem em um tópico do Pub/Sub, uma alteração em um bucket do Cloud Storage ou um evento do Firebase.
Há dois tipos de funções orientadas a eventos: funções de segundo plano e funções do CloudEvent. As linguagens do JVM são compatíveis apenas com funções em segundo plano.
Kotlin
Ao desenvolver funções em segundo plano, você define classes para os eventos que acionam suas funções. No entanto, o empacotamento GSON pode não funcionar imediatamente para o Kotlin, caso sua classe de evento não siga determinadas diretrizes.
Na sua classe de evento Kotlin, as propriedades precisam estar em conformidade com estas diretrizes:
- Eles podem ser definidos como
null
. - Eles não têm um valor padrão atribuído a eles.
- Elas não são propriedades delegadas.
Outra abordagem é criar suas classes de eventos em Java e usá-las a partir da classe de função Kotlin.
Groovy
Scala
Como implantar as funções em segundo plano
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
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
Testar os exemplos em segundo plano
É possível testar os exemplos em segundo plano da seguinte maneira:
Publique uma mensagem no tópico do Pub/Sub para acionar a função:
gcloud pubsub topics publish my-topic --message Flurry
Veja os registros:
gcloud functions logs read --limit 10
Você verá algo assim, com uma mensagem que inclui o nome publicado no tópico do 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'