ID de la région
Le REGION_ID
est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r
est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.
En savoir plus sur les ID de région
Pub/Sub fournit une messagerie asynchrone fiable de type "plusieurs à plusieurs" entre applications. Les applications de type "éditeur" peuvent envoyer des messages à un sujet et d'autres applications peuvent s'abonner à ce sujet pour recevoir les messages.
Ce document explique comment utiliser la bibliothèque cliente Cloud pour envoyer et recevoir des messages Pub/Sub dans une application Go.
Prérequis
- Suivez les instructions de la section "Hello, World!" pour Go sur App Engine pour configurer votre environnement et votre projet, et pour comprendre la structure des applications Go dans App Engine.
- Notez et enregistrez l'ID de votre projet. Vous en aurez besoin pour exécuter l'exemple d'application décrit dans ce document.
Cloner l'exemple d'application
Copiez les exemples d'applications sur votre ordinateur local, puis accédez au répertoire
pubsub
:go get -d -v github.com/GoogleCloudPlatform/golang-samples/pubsub cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/appengine_flexible/pubsub
Créer un sujet et un abonnement
Créez un sujet et un abonnement, pour lesquels vous devez spécifier le point de terminaison 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.REGION_ID.r.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 valider les requêtes.Définir des variables d'environnement
Modifiez le fichier
app.yaml
afin de définir les variables d'environnement pour le sujet et le jeton de validation :Réviser le code
L'exemple d'application utilise la bibliothèque cliente Google Cloud Pub/Sub.
L'exemple d'application utilise les variables d'environnement que vous avez définies dans le fichier
app.yaml
(PUBSUB_TOPIC
etPUBSUB_VERIFICATION_TOKEN
) pour la configuration.Les messages reçus par cette instance sont stockés dans une tranche :
messages []string
La fonction
pushHandler
reçoit les messages envoyés, vérifie le jeton et ajoute le message à la tranchemessages
:La fonction
publishHandler
publie de nouveaux messages dans le sujet.Exécuter l'exemple en local
Lorsque vous exécutez l'exemple en local, vous pouvez utiliser Google Cloud CLI pour fournir l'authentification permettant d'utiliser les API Google Cloud. Si vous avez configuré votre environnement conformément à la procédure décrite dans la section Prérequis, vous avez d'ores et déjà exécuté la commande
gcloud init
, qui permet de fournir ce type d'authentification.Définissez ensuite les variables d'environnement avant de démarrer votre application :
export GOOGLE_CLOUD_PROJECT=[your-project-id] export PUBSUB_VERIFICATION_TOKEN=[your-token] export PUBSUB_TOPIC=[your-topic] go run pubsub.go
Simuler des notifications push
L'application peut envoyer des messages en local, mais ne peut pas recevoir de messages push en local. Vous pouvez toutefois simuler un message push en adressant une requête HTTP au point de terminaison de notification push local. L'exemple inclut le fichier
sample_message.json
.Vous pouvez utiliser
curl
ou un clienthttpie
pour envoyer une requête HTTPPOST
: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: Tue, 13 Nov 2018 16:04:18 GMT Content-Length: 0
Une fois la requête terminée, vous pouvez actualiser
localhost:8080
et 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 en utilisant l'outil de ligne de commande
gcloud
, exécutez la commande suivante à partir du répertoire où se trouve votre fichierapp.yaml
:gcloud app deploy
Vous pouvez désormais accéder à l'application à l'adresse
https://PROJECT_ID.REGION_ID.r.appspot.com
. Vous pouvez utiliser le formulaire pour envoyer de messages (mais vous ne pourrez pas forcément savoir quelle instance de votre application recevra la notification). Vous pouvez envoyer plusieurs messages et actualiser la page pour afficher le message reçu.