ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que seleccionas cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Pub/Sub proporciona mensajería asíncrona, confiable y de varios a varios entre aplicaciones. Las aplicaciones de publicador pueden enviar mensajes a un tema, y otras aplicaciones pueden suscribirse a ese tema para recibir los mensajes.
En este documento, se describe cómo usar la biblioteca cliente de Cloud para enviar y recibir mensajes de Pub/Sub en una app de Java 8.
Requisitos
- Sigue las instrucciones que se proporcionan en “Hello, World!” para Java 8 en App Engine a fin de configurar el entorno y el proyecto, y comprender cómo se estructuran las apps de Java 8 en App Engine.
- Anota y guarda el ID del proyecto porque lo necesitarás para ejecutar la aplicación de muestra que se describe en este documento.
Clona la app de muestra
Copia las apps de muestra en tu máquina local y navega hasta el directorio
pubsub
:git clone https://github.com/GoogleCloudPlatform/java-docs-samples cd java-docs-samples/appengine-java8/pubsub
Crea un tema y una suscripción
Crea un tema y una suscripción, lo que incluye especificar el extremo al que el servidor Pub/Sub debe enviar solicitudes:
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
Reemplaza
YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.Configura variables de entorno
Edita el archivo
appengine-web.xml
a fin de establecer las variables de entorno para el tema y el token de verificación:Revisión de código
La app de muestra usa la biblioteca cliente de Cloud.La app de muestra usa los valores que estableces en el archivo
appengine-web.xml
para configurar las variables de entorno. El controlador de las solicitudes push utiliza estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:String pubsubVerificationToken = System.getenv("PUBSUB_VERIFICATION_TOKEN");
La app de muestra mantiene una instancia de base de datos de Cloud Datastore para almacenar mensajes. El servlet
PubSubPush
recibe los mensajes enviados y los agrega a la instancia de base de datosmessageRepository
:El servlet
PubSubPublish
interactúa con la app web de App Engine para publicar mensajes nuevos y mostrar los recibidos:Ejecuta la muestra de forma local
En la ejecución local, puedes usar Google Cloud CLI para proporcionar autenticación a fin de emplear las API de Google Cloud. Si configuraste tu entorno como se describe en Requisitos, ya ejecutaste el comando
gcloud init
que proporciona esta autenticación.mvn clean package
A continuación, configura las variables de entorno antes de iniciar la aplicación:
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token] export PUBSUB_TOPIC=[your-topic] mvn appengine:run
Simular notificaciones push
La aplicación puede enviar mensajes de forma local, pero no puede recibir mensajes push localmente. Sin embargo, puedes simular un mensaje push; para ello, envía una solicitud HTTP al extremo de notificación push local. La muestra incluye el archivo
sample_message.json
.Puedes usar
curl
o un clientehttpie
para enviar una solicitud HTTPPOST
:curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=[your-token]"
O
http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
Respuesta:
HTTP/1.1 200 OK Date: Wed, 26 Apr 2017 00:03:28 GMT Content-Length: 0 Server: Jetty(9.3.8.v20160314)
Una vez completada la solicitud, puedes actualizar
localhost:8080
y ver el mensaje en la lista de mensajes recibidos.Ejecuta en App Engine
Para implementar la app de demostración en App Engine mediante la herramienta de línea de comandos de
gcloud
, debes ejecutar el siguiente comando desde el directorio en el que se encuentrapom.xml
:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto de Cloud. Si tu archivo
pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad-Dapp.deploy.projectId
en el comando que ejecutas.Ahora puedes acceder a la aplicación en
https://PROJECT_ID.REGION_ID.r.appspot.com
. Puedes usar el formulario para enviar mensajes, pero no hay forma de garantizar qué instancia de tu aplicación recibirá la notificación. Puedes enviar varios mensajes y actualizar la página para ver el mensaje recibido.