ID regione
REGION_ID
è un codice abbreviato assegnato da Google
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione
in modo simile ai codici paese e provincia di uso comune. Per le app create dopo il giorno
Febbraio 2020, REGION_ID.r
è incluso in
URL di App Engine. Per le app esistenti create prima di questa data,
l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Pub/Sub fornisce un servizio di messaggistica asincrona, many-to-many affidabile tra le applicazioni. Editore le applicazioni possono inviare messaggi a un argomento, mentre altre applicazioni possono sottoscrivere quell'argomento per ricevere i messaggi.
Questo documento descrive come utilizzare Cloud Client Raccolta per inviare e ricevere messaggi Pub/Sub in un'app Java 8.
Prerequisiti
- Segui le istruzioni in "Ciao, mondo!" per Java 8 su App Engine per configurare l'ambiente e il progetto e comprendere Le app Java 8 di App Engine sono strutturate.
- Annota e salva l'ID progetto, perché ti servirà per eseguire dell'applicazione di esempio descritta in questo documento.
Clonazione dell'app di esempio
Copia le app di esempio sulla tua macchina locale e vai al pubsub
directory:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/appengine-java8/pubsub
Creazione di un argomento e di una sottoscrizione
Creare un argomento e una sottoscrizione, che includono la specifica dell'endpoint a cui il server Pub/Sub deve inviare le richieste:
bv # Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Sostituisci YOUR_TOKEN
con un token segreto casuale. L'endpoint push lo utilizza per verificare le richieste.
Per utilizzare Pub/Sub con l'autenticazione, crea un altro abbonamento:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'Sostituisci "YOUR-SERVICE-ACCOUNT-EMAIL" con l'email del tuo [account di servizio](/appengine/docs/flex/configure-service-accounts). ### Impostazione delle variabili di ambiente {: edit_appyaml} Modifica l'argomento appengine-web.xml " per impostare le variabili di ambiente per il tuo argomento e il token di verifica: ## Revisione del codice L'app di esempio utilizza la classe [Cloud Client] Libreria](https://googleapis.dev/java/google-cloud-clients/latest/index.html){: class="external"}. L'app di esempio utilizza i valori che hai impostato nella sezione " appengine-web.xml ` in e configurare le variabili di ambiente. Il gestore di richieste push utilizza questi valori per confermare che la richiesta provenga da Pub/Sub e abbia avuto origine da un fonte: String pubsubVerificaToken = System.getenv("PUBSUB_VERIFICATION_TOKEN"); L'app di esempio gestisce un'istanza del database Cloud Datastore per archiviare i messaggi. Il servlet "PubSubPush" riceve i messaggi inviati tramite push e li aggiunge al Istanza di database "messageRepository": Il servlet "PubSubPublication" interagisce con l'app web App Engine per pubblica nuovi messaggi e visualizza i messaggi ricevuti: ## Esecuzione dell'esempio in locale {: #run_the_sample_locally} Durante l'esecuzione in locale, puoi utilizzare Google Cloud CLI per fornire l'autenticazione per utilizzare le API Google Cloud. Supponendo di aver configurato l'ambiente come descritto in [Prerequisiti](#prerequisites), hai già eseguito il comando "gcloud init", che fornisce questa autenticazione. Pacchetto mvn clean Quindi imposta le variabili di ambiente prima di avviare l'applicazione: esportazione PUBSUB_VERIFICATION_TOKEN=[token-di-verifica] esporta PUBSUB_TOPIC=[tuo-argomento] mvn appengine:run ### Simulazione di notifiche push {: Simula_push_notifications} L'applicazione può inviare messaggi localmente, ma non è in grado di ricevere messaggi push in locale. Tuttavia, puoi simulare un messaggio push effettuando una richiesta HTTP all'endpoint delle notifiche push locali. L'esempio include il file `sample_message.json`. Puoi usare "curl" o un client [`httpie`](https://github.com/jkbrzt/httpie){: class="external"} per invia una richiesta HTTP "POST": curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=[tuo-token]" Oppure: http POST ":8080/pubsub/push?token=[tuo-token]" < sample_message.json Risposta: HTTP/1.1 200 OK Data: Mer, 26 apr 2017 00:03:28 GMT Content-Length: 0 Server: Jetty(9.3.8.v20160314) Una volta completata la richiesta, puoi aggiornare "localhost:8080" e vedere messaggio nell'elenco dei messaggi ricevuti. ## In esecuzione su App Engine {: #run_on_app_engine} Per eseguire il deployment dell'app demo in App Engine mediante la riga di comando "gcloud" esegui il comando seguente dalla directory in cui `pom.xml` ha sede:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud. Se
il tuo pom.xml
file
specifica
ID progetto, non devi includere la proprietà -Dapp.deploy.projectId
nell'
il comando che esegui.
Ora puoi accedere all'applicazione da
https://PROJECT_ID.REGION_ID.r.appspot.com
.
Puoi utilizzare il modulo per inviare messaggi, ma non c'è alcuna garanzia di quale
dell'applicazione riceveranno la notifica. Puoi inviare
più messaggi e aggiorna la pagina per visualizzare il messaggio ricevuto.