Como gravar e responder a mensagens do Pub/Sub

O Google Cloud Pub/Sub fornece mensagens assíncronas confiáveis de muitos para muitos entre aplicativos. Os aplicativos do editor podem enviar mensagens para um tópico, e outros aplicativos podem se inscrever nele para receber as mensagens.

Este documento mostra como usar a biblioteca de cliente do Google Cloud para enviar e receber mensagens do Google Cloud Pub/Sub em um app executado no ambiente flexível.

Pré-requisitos

  • Siga as instruções em "Hello, World!" para Java no App Engine para configurar o ambiente e o projeto, além de compreender como apps Java do App Engine são estruturados.
  • Anote e salve o código do projeto. Você precisará dele para executar o aplicativo de amostra descrito neste documento.

    Clonar o aplicativo de amostra

    Copie os aplicativos de amostra para sua máquina local e navegue até o diretório do pubsub:

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

    Criar um tópico e inscrição

    Crie um tópico e inscrição. Isso inclui especificar o ponto de extremidade que receberá as solicitações do Pub/Sub:

    gcloud beta pubsub topics create YOUR_TOPIC_NAME
    gcloud beta pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \
        --topic YOUR_TOPIC_NAME \
        --push-endpoint \
        https://YOUR_PROJECT_ID.appspot.com/pubsub/push?token=YOUR_TOKEN \
        --ack-deadline 10
    

    Substitua YOUR_TOKEN por um token aleatório secreto. Ele é usado pelo ponto de extremidade do push para verificar as solicitações.

    Editar app.yaml

    Edite app.yaml para definir as variáveis de ambiente para o tópico e o token de verificação:

    env_variables:
      PUBSUB_TOPIC: <your-topic-name>
      PUBSUB_VERIFICATION_TOKEN: <your-verification-token>

    Revisão de código

    Executar a amostra localmente

    Ao fazer a execução localmente, use o Google Cloud SDK para fornecer autenticação e assim utilizar as APIs do Google Cloud. Supondo que o ambiente tenha sido configurado conforme descrito em Pré-requisitos, o comando gcloud init que fornece essa autenticação já foi executado.

    mvn clean package
    

    Em seguida, defina as variáveis de ambiente antes de iniciar o aplicativo:

    export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
    export PUBSUB_TOPIC=[your-topic]
    mvn jetty:run
    

    Simular notificações por push

    Pelo aplicativo, é possível enviar mensagens localmente, mas não é possível receber mensagens push localmente. É possível simular uma mensagem de push com uma solicitação HTTP para o ponto de extremidade da notificação local. A amostra inclui o arquivo sample_message.json.

    Use curl ou httpie para enviar uma solicitação HTTP POST:

    curl -H "Content-Type: application/json" -i --data @sample_message.json ":8080/pubsub/push?token=[your-token]"
    

    Ou

    http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
    

    Resposta:

    HTTP/1.1 200 OK
    Date: Wed, 26 Apr 2017 00:03:28 GMT
    Content-Length: 0
    Server: Jetty(9.3.8.v20160314)
    

    Após a conclusão da solicitação, atualize localhost:8080 e veja a mensagem na lista de mensagens recebidas.

    Executar no App Engine

    Para implantar o aplicativo de demonstração no App Engine usando a ferramenta de linha de comando gcloud, execute o seguinte comando no diretório em que app.yaml está localizado:

    mvn appengine:deploy
    

    Agora você pode acessar o aplicativo em https://[YOUR_PROJECT_ID].appspot.com. Você pode usar o formulário para enviar mensagens. No entanto, não há garantias sobre qual instância do seu aplicativo receberá a notificação. É possível enviar várias mensagens e atualizar a página para ver a mensagem recebida.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para documentos Java