ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base
all'area geografica selezionata al momento della creazione dell'app. Il codice non
corrisponde a un paese o a una provincia, anche se alcuni ID di area geografica potrebbero essere
simili ai codici di paese e provincia di uso comune. Per le app create dopo
febbraio 2020, REGION_ID.r
è incluso negli
URL di App Engine. Per le app esistenti create prima di questa data, l'ID area geografica è facoltativo nell'URL.
Scopri di più sugli ID dell'area geografica.
Pub/Sub fornisce messaggistica asincrona many-to-many affidabile tra le applicazioni. Le applicazioni dei publisher possono inviare messaggi a un argomento, mentre le altre applicazioni possono iscriversi all'argomento per ricevere i messaggi.
Questo documento descrive come utilizzare la libreria client di Cloud per inviare e ricevere messaggi Pub/Sub in un'app Java.
Prerequisiti
- Segui le istruzioni in Hello, World! per Java su App Engine per configurare l'ambiente e il progetto e per comprendere come sono strutturate le app Java di App Engine.
- Annota e salva l'ID progetto, perché ti servirà per eseguire l'applicazione di esempio descritta in questo documento.
Clonazione dell'app di esempio
Copia le app di esempio nella tua macchina locale e accedi alla directory
pubsub
:git clone https://github.com/GoogleCloudPlatform/java-docs-samples cd java-docs-samples/flexible/pubsub
Creazione di un argomento e di una sottoscrizione
Crea un argomento e una sottoscrizione, che includono la specifica dell'endpoint a cui il server Pub/Sub deve inviare richieste:
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
Sostituisci
YOUR_TOKEN
con un token casuale segreto. L'endpoint push utilizza questo valore per verificare le richieste.Imposta le variabili di ambiente
Modifica il file
app.yaml
per impostare le variabili di ambiente per l'argomento e il token di verifica:Revisione del codice
L'app di esempio utilizza la libreria client di Cloud.L'app di esempio utilizza i valori impostati nel file
app.yaml
per configurare le variabili di ambiente. Il gestore delle richieste push utilizza questi valori per confermare che la richiesta provenga da Pub/Sub e provenga da una fonte attendibile:String pubsubVerificationToken = System.getenv("PUBSUB_VERIFICATION_TOKEN");
L'app di esempio gestisce un'istanza di database Cloud Datastore per archiviare i messaggi. Il servlet
PubSubPush
riceve i messaggi push e li aggiunge all'istanza del databasemessageRepository
:Il servlet
PubSubPublish
interagisce con l'app web di App Engine per pubblicare nuovi messaggi e visualizzare quelli ricevuti:Esecuzione dell'esempio in locale
Durante l'esecuzione in locale, puoi utilizzare l'interfaccia a riga di comando di Google Cloud per fornire l'autenticazione per utilizzare le API Google Cloud. Supponendo che tu abbia configurato l'ambiente come descritto nei prerequisiti, hai già eseguito il comando
gcloud init
, che fornisce questa autenticazione.mvn clean package
Quindi imposta le variabili di ambiente prima di avviare l'applicazione:
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token] export PUBSUB_TOPIC=[your-topic] mvn jetty:run
Simulazione di notifiche push
L'applicazione può inviare messaggi localmente, ma non è in grado di ricevere messaggi push localmente. Tuttavia, puoi simulare un messaggio push inviando una richiesta HTTP all'endpoint della notifica push locale. Nel file di esempio è incluso
sample_message.json
.Puoi utilizzare un client
curl
ohttpie
per inviare una richiesta 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
Risposta:
HTTP/1.1 200 OK Date: Wed, 26 Apr 2017 00:03:28 GMT Content-Length: 0 Server: Jetty(9.3.8.v20160314)
Al termine della richiesta, puoi aggiornare
localhost:8080
e visualizzare il messaggio nell'elenco di messaggi ricevuti.Esecuzione in App Engine
Per eseguire il deployment dell'app demo in App Engine utilizzando lo strumento a riga di comando
gcloud
, esegui il comando seguente dalla directory in cui si trova il fileapp.yaml
:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del progetto Cloud. Se il file
pom.xml
specifica il tuo ID progetto, non devi includere la proprietà-Dapp.deploy.projectId
nel comando che esegui.Ora puoi accedere all'applicazione in
https://PROJECT_ID.REGION_ID.r.appspot.com
. Puoi utilizzare il modulo per inviare messaggi, ma non possiamo garantire quale istanza della tua applicazione riceverà la notifica. Puoi inviare più messaggi e aggiornare la pagina per visualizzare il messaggio ricevuto.