Guia de início rápido: adicionar uma tarefa a uma fila do Cloud Tasks

Adicionar uma tarefa a uma fila do Cloud Tasks

Neste guia de início rápido, é possível testar operações básicas usando as filas do Cloud Tasks pela API Cloud Tasks.

As amostras neste guia de início rápido visam gerenciadores do App Engine, portanto, você precisa implantar um aplicativo do App Engine. Se você não estiver usando o App Engine como destino, não será preciso implantar um aplicativo do App Engine e será possível desativar qualquer aplicativo atual do App Engine.

Por exemplo, se você estiver usando um gerenciador de destino HTTP exclusivamente, um aplicativo do App Engine não será necessário. No caso de destinos HTTP genéricos, o serviço do Cloud Tasks encaminha a solicitação de tarefa ao worker, localizado em qualquer endpoint HTTP genérico, com base na configuração da tarefa. Para mais informações sobre o uso de destinos HTTP, consulte Criar tarefas de destino HTTP.

Antes de começar

Para configurar o ambiente do Cloud neste guia de início rápido, crie um projeto do Google Cloud e adicione um aplicativo do App Engine com o faturamento ativado. Se você tiver uma conta de faturamento ao criar seu projeto do Google Cloud, o faturamento será ativado automaticamente.

Saiba mais sobre como gerenciar projetos do Google Cloud, aplicativos do App Engine e o faturamento em geral.

  1. Crie ou selecione um projeto do Google Cloud:
    Acessar a página do App Engine
    1. Use os botões no canto superior direito para selecionar um nome de projeto existente ou criar um novo.
    2. Anote o ID do projeto na caixa suspensa no canto superior esquerdo. Ele servirá como um parâmetro para suas solicitações do Cloud Tasks.
  2. Adicione um aplicativo do App Engine ao seu projeto:
    1. Na página Bem-vindo ao App Engine, clique em Criar aplicativo.
    2. Selecione uma região para o aplicativo. Anote esse local, ele atuará como o parâmetro LOCATION_ID das solicitações do Cloud Tasks. Observe que dois locais, chamados europe-west e us-central nos comandos do App Engine, são chamados, respectivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks.
    3. Na página Primeiros passos, clique em Avançar. Você cuidará disso mais tarde. Se este for um projeto novo, o ambiente de execução será criado.
    4. Se o pop-up Ativar faturamento for exibido, selecione sua conta de faturamento. Se você não tiver uma conta de faturamento, clique em Criar conta de faturamento e siga o assistente.
    5. Na página Próximos passos, clique em Farei isso mais tarde. Você vai acessar as amostras e fazer o download do SDK mais tarde.

  3. Ative a API Cloud Tasks.
    Acessar a página "API Cloud Tasks"
  4. Configure a autenticação na API.
    1. Siga as instruções para criar uma conta de serviço. Faça o download do arquivo com a chave JSON associada à conta e armazene-o localmente. A chave da conta de serviço autoriza o código local a acessar o Google Cloud de maneira programática.
    2. As amostras usam as bibliotecas de cliente do Google Cloud para interagir com o App Engine. Portanto, você precisa definir uma variável de ambiente para apontar para a chave salva acima, que a biblioteca usa para autenticar e autorizar suas solicitações. É possível criar suas solicitações sem usar as bibliotecas de cliente, mas elas ajudam a gerenciar detalhes de comunicação de baixo nível com o servidor, incluindo a autenticação.
  5. Instale e configure a CLI gcloud. Isso dá acesso à ferramenta gcloud.

Configurar a amostra

Nestas amostras, há um framework para tentar adicionar tarefas às filas do Cloud Tasks pela API Cloud Tasks .

C#

A amostra C# consiste em dois aplicativos, um (CreateAppEngineTask) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (CloudTasks) implantado no App Engine flex como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Verifique se o SDK do .NET Core, versão 2.0 ou mais recente, está instalado.

  2. Verifique se a ferramenta gcloud foi inicializada e configurada para usar o projeto do Google Cloud criado acima.

  3. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples

  4. Navegue até o diretório que contém o código de amostra de CreateTask:

    cd dotnet-docs-samples/cloudtasks/api/TasksSample/

  5. Instale todas as dependências:

    dotnet restore

  6. Navegue até o diretório (dotnet-docs-samples/cloudtasks/appengine/) que contém o código de amostra para CloudTasks e instale todas as dependências:

    dotnet restore

  7. Compile o aplicativo e prepare-o para implantação:

    dotnet publish

  8. Implante o serviço do worker (CloudTasks) no ambiente flexível do App Engine:

    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml

  9. Verifique se a página de índice é exibida:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Python

O aplicativo de amostra do Python consiste em dois arquivos, um (create_app_engine_queue_tasks.py) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (main.py) implantado no App Engine como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

  2. Navegue até o diretório que contém o código de exemplo:

    cd python-docs-samples/appengine/flexible/tasks/

  3. Instale todas as dependências:

    pip install -r requirements.txt

  4. Verifique se você inicializou a ferramenta gcloud e a configurou para usar o projeto criado acima.

  5. Implante o serviço do worker (main.py) no App Engine:

    gcloud app deploy

  6. Verifique se a página de índice é exibida:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Java

O aplicativo de amostra Java 8 consiste em dois arquivos, um (CreateTask.java) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (TaskServlet.java) implantado no App Engine como um worker para "processar" a tarefa. Para executar o exemplo usando Java 11, consulte Como executar código Java 11 de forma assíncrona.

Observação: para usar o aplicativo de amostra do Java, é preciso ter estes outros componentes:

  • Maven
  • O componente app-engine-java para a CLI gcloud
  • O plug-in Maven do App Engine, que já foi especificado no arquivo pom.xml fornecido para a amostra

Para mais informações sobre esses componentes, consulte Como usar o Apache Maven e o plug-in do App Engine e Metas e parâmetros do plug-in do Maven.

Para fazer o download e instalar a amostra:

  1. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

  2. Navegue até o diretório de nível superior da amostra do Tasks:

    cd java-docs-samples/appengine-java8/tasks/quickstart/

  3. Verifique se você inicializou a ferramenta gcloud e a configurou para usar o projeto criado acima.

  4. Crie e execute a ferramenta de linha de comando local (CreateTask.java):

    mvn appengine:run

  5. Implante o serviço do worker (TaskServlet.java) no App Engine:

    mvn appengine:deploy

PHP

A amostra PHP consiste em dois arquivos, um (/snippets/src/create_task.php) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (/apps/handler/index.php) implantado no App Engine como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

  2. Navegue até o diretório de nível superior da amostra do Tasks:

    cd php-docs-samples/appengine/standard/tasks

    No diretório tasks, você verá dois subdiretórios:

    • apps/handler: contém o código do serviço do worker a ser implantado no App Engine
    • snippets: contém o código da ferramenta de linha de comando local
  3. Verifique se o Composer está instalado. Se você quiser usá-lo localmente, verifique se composer.phar está localizado nos dois subdiretórios. Consulte informações sobre a execução no local ou global nos documentos do Composer.

  4. No diretório snippets, instale todas as dependências:

    composer install
    ou apenas no local:
    php composer.phar install

  5. No diretório apps/handler, instale todas as dependências:

    composer install
    ou apenas no local:
    php composer.phar install

  6. Verifique se a ferramenta gcloud foi inicializada e configurada para usar o projeto do Google Cloud criado acima.

  7. No diretório apps/handler, implante o serviço do worker no App Engine usando o comando gcloud app deploy:

    gcloud app deploy

  8. Verifique se o aplicativo que contém o serviço está sendo executado:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Go

A amostra Golang consiste em dois arquivos, um (tasks/create_task/create_task.go) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (tasks/handle_task/handle_task.go) implantado no App Engine como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Verifique se você instalou o componente Go do App Engine gcloud:

    gcloud components install app-engine-go

  2. Verifique se você inicializou a ferramenta gcloud e a configurou para usar o projeto criado acima.

  3. Clone o repositório de aplicativos de amostra em sua máquina local:

    go get github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/tasks/...

  4. Acesse o diretório tasks/handle_task do código de amostra do worker.

    cd golang-samples/appengine/go11x/tasks/handle_task

  5. Observe o arquivo app.yaml, que contém as informações de configuração necessárias.

  6. Implante o serviço do worker (handle_task.go) no App Engine:

    gcloud app deploy

  7. Verifique se o aplicativo que contém o serviço está sendo executado:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Node.js

A amostra Node.js consiste em dois arquivos, um (createTask.js) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (server.js) implantado no App Engine como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/googleapis/nodejs-tasks.git

  2. Navegue até o diretório que contém o código de exemplo:

    cd nodejs-tasks/samples

  3. Instale todas as dependências.

    Você pode usar npm:

    npm install
    Ou yarn:
    yarn install

  4. Verifique se você inicializou a ferramenta gcloud e a configurou para usar o projeto criado acima.

  5. Implante o serviço do worker (server.js) no ambiente padrão do App Engine:

    gcloud app deploy app.yaml

  6. Verifique se o aplicativo que contém o serviço está sendo executado:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Ruby

A amostra Ruby consiste em dois arquivos, um (create_Task.rb) executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila e outro (app.rb) implantado no App Engine como um worker para "processar" a tarefa.

Para fazer o download e instalar a amostra:

  1. Clone o repositório de aplicativos de amostra na máquina local:

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

  2. Navegue até o diretório que contém o código de exemplo:

    cd ruby-docs-samples/appengine/cloud-tasks

  3. Instale as dependências:

    bundle install

  4. Verifique se você inicializou a ferramenta gcloud e a configurou para usar o projeto criado acima.

  5. Implante o serviço do worker (app.rb) no ambiente flexível do App Engine:

    gcloud app deploy app.yaml

  6. Verifique se o aplicativo que contém o serviço está sendo executado:

    gcloud app browse

    Seu navegador abre https://{YOUR_PROJECT_ID}.appspot.com/ e exibe Hello, World!.

Para mais informações sobre como criar gerenciadores de tarefas do App Engine, consulte Como criar gerenciadores de tarefas do App Engine.

Criar uma fila do Cloud Tasks

Use a função de gerenciamento de filas gcloud da CLI gcloud para criar sua fila no ambiente que você preparou acima.

  1. Na linha de comando, digite o seguinte:

    gcloud tasks queues create my-queue

  2. Aguarde um pouco para a fila ser inicializada e, em seguida, use describe para verificar se a criação foi bem-sucedida:

    gcloud tasks queues describe my-queue

  3. Verifique se a saída é semelhante a esta:

    name: projects/[PROJECT_ID]/locations/[LOCATION_ID]/queues/my-appengine-queue # Note these ids
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
    

Adicionar uma tarefa à fila do Cloud Tasks

C#

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Defina as seguintes variáveis de ambiente na sua máquina, manualmente, no código no seu app de amostra ou por um alias. O aplicativo de amostra as utiliza para criar a solicitação que adiciona as tarefas à fila:

    export GOOGLE_PROJECT_ID=my-project-id # The project ID you set up above
    export GCP_QUEUE=my-queue # the queue you created above
    export LOCATION_ID=my-location-id # The region in which your queue is running

    Para encontrar o ID do local para o app do App Engine, use o seguinte comando gcloud:

    gcloud tasks locations list

  2. Navegue até a pasta TasksSample:

    cd ../api/TasksSample

  3. Usando test, crie uma tarefa e adicione um payload, a string "hello". O aplicativo CloudTasks implantado anteriormente tem um endpoint, log_payload, que processa o payload registrando-o.

    dotnet test

  4. Verifique no registro se a tarefa acessou o endpoint:

    gcloud app logs read

Python

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código no seu app de amostra ou por um alias. O aplicativo de amostra as utiliza para criar a solicitação que adiciona as tarefas à fila:

    export PROJECT_ID=PROJECT_ID # The project ID you set up above
    export LOCATION_ID=LOCATION_ID # The region in which your queue is running
    export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  2. Use o create_app_engine_queue_task.py local para criar uma tarefa e adicionar um payload de hello. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    python create_app_engine_queue_task.py --project=$PROJECT_ID
    --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello

  3. Verifique se o payload foi recebido:

    gcloud app logs read

Java

Depois de criar a tarefa localmente, ela deve ser adicionada à fila configurada e entregue a um worker assíncrono:

  1. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código no seu app de amostra ou por um alias. O aplicativo de amostra as utiliza para criar a solicitação que adiciona a tarefa à fila:

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID # The project ID you set up above
    export LOCATION_ID=LOCATION_ID # The region in which your queue is running
    export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  2. Crie uma tarefa, segmentada no endpoint /task/create no servlet que você implantou, com um payload de hello. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
      -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT
      --queue $QUEUE_ID --location $LOCATION_ID --payload hello"
    

  3. Verifique se o payload foi recebido nos registros:

    gcloud app logs read

PHP

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Navegue até o diretório snippets.

  2. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código no seu app de amostra ou por um alias. O aplicativo de amostra as utiliza para criar a solicitação que adiciona a tarefa à fila:

    export PROJECT_ID=PROJECT_ID # The project ID from above
    export LOCATION_ID=LOCATION_ID # The region in which your queue is running
    export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  3. Use o snippet local create_task.php para criar uma tarefa e adicionar um payload de hello. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
    

  4. Verifique se o payload foi recebido nos registros:

    gcloud app logs read

Go

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Se você ainda estiver no diretório tasks/handle_task, navegue até o diretório tasks/create_task.

  2. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código no seu app de amostra ou por um alias. O cliente usa essas informações para criar a solicitação:

     export PROJECT_ID=PROJECT_ID # The project ID from above
     export LOCATION_ID=LOCATION_ID # The region in which your queue is running
     export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  3. Crie uma tarefa com um payload de hello e adicione essa tarefa à sua fila. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello 

  4. Para verificar se o payload foi recebido, visualize os registros do serviço do worker.

    gcloud app logs read

Node.js

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código no seu app de amostra ou por um alias. O cliente usa essas informações para criar a solicitação:

    export PROJECT_ID=PROJECT_ID # The project ID from above
    export LOCATION_ID=LOCATION_ID # The region in which your queue is running
    export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  2. Crie uma tarefa com um payload de hello e adicione essa tarefa à sua fila. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello 

  3. Para verificar se o payload foi recebido, visualize os registros do serviço do worker.

    gcloud app logs read

Ruby

Crie uma tarefa localmente, adicione-a à fila configurada e entregue-a a um worker assíncrono:

  1. Defina as seguintes variáveis de ambiente na sua máquina manualmente, no código do seu aplicativo de amostra ou por um alias. O cliente usa essas informações para criar a solicitação:

    export GOOGLE_CLOUD_PROJECT=my-project-id # The project ID from above
    export LOCATION_ID=my-location-id # The region in which your queue is running
    export QUEUE_ID=my-queue # The queue you created above
    Para encontrar o ID de local, use o seguinte comando gcloud:
    gcloud tasks locations list

  2. Crie uma tarefa com um payload de hello e adicione essa tarefa à sua fila. O payload pode ser qualquer dado da solicitação necessário para que o worker conclua o processamento da tarefa:

    ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello

  3. Para verificar se o payload foi recebido, visualize os registros do serviço do worker.

    gcloud app logs read

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  1. No console, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir