# Using Google Cloud Pub/Sub on App Engine Standard Java 8 Environment Open in Cloud Shell This sample demonstrates how to use [Google Cloud Pub/Sub][pubsub] from [Google App Engine standard environment][ae-docs]. [pubsub]: https://cloud.google.com/pubsub/docs/ [ae-docs]: https://cloud.google.com/appengine/docs/java/ The home page of this application provides a form to publish messages using Google/Cloud PubSub. The application then receives these published messages over a push subscription endpoint and then stores in Google Cloud Datastore. The home page provides a view of the most recent messages persisted in storage. ## Clone the sample app Copy the sample apps to your local machine, and cd to the pubsub directory: ``` git clone https://github.com/GoogleCloudPlatform/java-docs-samples cd java-docs-samples/appengine-java8/pubsub ``` ## Setup - Make sure [`gcloud`](https://cloud.google.com/sdk/docs/) is installed and initialized: ``` gcloud init ``` - If this is the first time you are creating an App Engine project ``` gcloud app create ``` - For local development, [set up](https://cloud.google.com/docs/authentication/getting-started) authentication - [Enable](https://console.cloud.google.com/launcher/details/google/pubsub.googleapis.com) Pub/Sub API - Create a topic ``` gcloud beta pubsub topics create ``` - Create a push subscription, to send messages to a Google Cloud Project URL such as https://.appspot.com/push. The verification token is used to ensure that the end point only handles requests that are sent matching the verification token. You can use `uuidgen` on MacOS X, Windows, and Linux to generate a unique verification token. ``` gcloud beta pubsub subscriptions create \ --topic \ --push-endpoint \ https://.appspot.com/pubsub/push?token= \ --ack-deadline 30 ``` ## Run locally Set the following environment variables and run using shown Maven command. You can then direct your browser to `http://localhost:8080/` ``` export PUBSUB_TOPIC= export PUBSUB_VERIFICATION_TOKEN= mvn appengine:run ``` ## Send fake subscription push messages with: ``` curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=" ``` ## Deploy Update the environment variables `PUBSUB_TOPIC` and `PUBSUB_VERIFICATION_TOKEN` in [`appengine-web.xml`](src/main/webapp/WEB-INF/appengine-web.xml), then: ``` mvn appengine:deploy ``` Direct your browser to `https://project-id.appspot.com`.