Écrire des messages Pub/Sub et y répondre

Cloud Pub/Sub propose une messagerie asynchrone fiable de type "plusieurs à plusieurs" entre applications. Les applications d'éditeur peuvent envoyer des messages dans un sujet et d'autres applications peuvent s'abonner à ce sujet pour recevoir les messages.

Ce document explique comment utiliser la bibliothèque cliente Google Cloud pour envoyer et recevoir des messages Cloud Pub/Sub dans une application qui s'exécute dans l'environnement flexible.

Prérequis

  • Suivez les instructions de la section "Hello, World!for Java on App Engine ("Hello, World!" pour Java sur App Engine) pour configurer votre environnement et votre projet et pour comprendre la structure des applications Java dans App Engine.
  • Notez et enregistrez votre ID de projet, dont vous aurez besoin pour exécuter l'exemple d'application décrite dans ce document.

    Cloner l'exemple d'application

    Copiez les exemples d'applications sur votre machine locale et accédez au répertoire pubsub :

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

    Créer un sujet et un abonnement

    Créez un sujet et un abonnement, qui incluent la spécification du point de terminaison final auquel le serveur Pub/Sub/ doit envoyer des requêtes :

    gcloud pubsub topics create YOUR_TOPIC_NAME
    gcloud 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
    

    Remplacez YOUR_TOKEN par un jeton secret aléatoire. Le point de terminaison push l'utilise pour vérifier les requêtes.

    Modifier le fichier app.yaml

    Modifiez le fichier app.yaml pour définir les variables d'environnement de votre sujet et de votre jeton de vérification :

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

    Révision du code

    Exécuter l'échantillon en local

    Lors de l'exécution en local, vous pouvez utiliser le SDK Cloud pour fournir une authentification permettant d'utiliser les API Google Cloud. En supposant que vous configurez votre environnement comme décrit dans Conditions préalables, vous avez déjà exécuté la commande gcloud init, qui fournit cette authentification.

    mvn clean package
    

    Définissez ensuite les variables d'environnement avant de démarrer votre application :

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

    Simuler des notifications push

    L'application peut envoyer des messages en local, mais ne peut pas en recevoir en local. Toutefois, vous pouvez simuler un message push en adressant une requête HTTP au point de terminaison de la notification push locale. L'exemple comprend le fichier sample_message.json.

    Vous pouvez utiliser curl ou httpie pour envoyer une requête HTTP POST :

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

    Ou

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

    Réponse :

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

    Une fois la demande terminée, vous pouvez actualiser localhost:8080 pour afficher le message dans la liste des messages reçus.

    Exécuter sur App Engine

    Pour déployer l'application de démonstration sur App Engine à l'aide de l'outil de ligne de commande gcloud, exécutez la commande suivante à partir du répertoire où se trouve votre fichier app.yaml :

    mvn appengine:deploy
    

    Vous pouvez maintenant accéder à l'application à l'adresse https://[YOUR_PROJECT_ID].appspot.com. Vous pouvez utiliser le formulaire pour envoyer des messages, mais vous ne pourrez pas savoir quelle instance de votre application recevra la notification. Vous pouvez envoyer plusieurs messages et actualiser la page pour afficher le message reçu.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

App Engine flexible environment for Java docs