From 939c5c7dc705a82210d1571002028f848ac3113d Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Mon, 16 Jul 2018 15:23:04 -0700 Subject: [PATCH 1/3] Add Cloud Tasks Readme --- appengine-java8/tasks/README.md | 105 ++++++++++++++++++++++++++++++++ tasks/README.md | 64 +++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 appengine-java8/tasks/README.md create mode 100644 tasks/README.md diff --git a/appengine-java8/tasks/README.md b/appengine-java8/tasks/README.md new file mode 100644 index 00000000000..a669a2541cd --- /dev/null +++ b/appengine-java8/tasks/README.md @@ -0,0 +1,105 @@ +# Google Cloud Tasks App Engine Queue Samples + +Sample command-line program for interacting with the Cloud Tasks API +using App Engine queues. + +App Engine queues push tasks to an App Engine HTTP target. This directory +contains both the App Engine app to deploy, as well as the snippets to run +locally to push tasks to it, which could also be called on App Engine. + +`CreateTask.java` is a simple command-line program to create +tasks to be pushed to the App Engine app. + +`TaskServlet.java` is the main App Engine app. This app serves as an endpoint to receive +App Engine task attempts. + + +## Initial Setup + + * Set up a Google Cloud Project and enable billing. + * Enable the + [Cloud Tasks API](https://console.cloud.google.com/launcher/details/google/cloudtasks.googleapis.com). + * Download and install the [Cloud SDK](https://cloud.google.com/sdk). + * Download and install [Maven](http://maven.apache.org/install.html). + +## Creating a queue + +To create a queue using the Cloud SDK, use the following gcloud command: + +``` +gcloud beta tasks queues create-app-engine-queue my-appengine-queue +``` + +Note: A newly created queue will route to the default App Engine service and +version unless configured to do otherwise. + +## Deploying the App Engine app +[Using Maven and the App Engine Plugin](https://cloud.google.com/appengine/docs/flexible/java/using-maven) +& [Maven Plugin Goals and Parameters](https://cloud.google.com/appengine/docs/flexible/java/maven-reference) + +### Running locally + +``` +mvn appengine:run +``` +### Deploying + +``` +mvn appengine:deploy +``` + +Verify the index page is serving: + +``` +gcloud app browse +``` + +## Running the Samples + +Set environment variables: + +First, your project ID: + +``` +export PROJECT_ID=my-project-id +``` + +Then the queue ID, as specified at queue creation time. Queue IDs already +created can be listed with `gcloud beta tasks queues list`. + +``` +export QUEUE_ID=my-appengine-queue +``` + +And finally the location ID, which can be discovered with +`gcloud beta tasks queues describe $QUEUE_ID`, with the location embedded in +the "name" value (for instance, if the name is +"projects/my-project/locations/us-central1/queues/my-appengine-queue", then the +location is "us-central1"). + +``` +export LOCATION_ID=us-central1 +``` + +Create a task, targeted at the `log_payload` endpoint, with a payload specified: + +``` +mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ + -Dexec.args="--project-id $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID --payload hello" +``` + +The App Engine app serves as a target for the push requests. It has an +endpoint `/tasks/create` that reads the payload (i.e., the request body) of the +HTTP POST request and logs it. The log output can be viewed with: + +``` +gcloud app logs read +``` + +Create a task that will be scheduled for a time in the future using the +`--in-seconds` flag: + +``` +mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ + -Dexec.args="--project-id $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID --payload hello --in-seconds 30" +``` diff --git a/tasks/README.md b/tasks/README.md new file mode 100644 index 00000000000..4140ba4c7fd --- /dev/null +++ b/tasks/README.md @@ -0,0 +1,64 @@ +# Google Cloud Tasks Pull Queue Samples + + +Open in Cloud Shell + +Sample command-line program for interacting with the Google Cloud Tasks +API using pull queues. + +Pull queues let you add tasks to a queue, then programatically remove +and interact with them. Tasks can be added or processed in any +environment, such as on Google App Engine or Google Compute Engine. + +`Quickstart.java` is a simple command-line program to demonstrate listing +queues, creating tasks, and pulling and acknowledging tasks. + +## Initial Setup + + * Set up a Google Cloud Project and enable billing. + * Enable the + [Cloud Tasks API](https://console.cloud.google.com/launcher/details/google/cloudtasks.googleapis.com). + * Download and install the [Cloud SDK](https://cloud.google.com/sdk). + * Download and install [Maven](http://maven.apache.org/install.html). + + +## Creating a queue + +To create a queue using the Cloud SDK, use the following gcloud command: + +``` +gcloud beta tasks queues create-pull-queue my-pull-queue +``` + +In this example, the queue will be named `my-pull-queue`. + +## Running the Samples + +From the project folder, build your project with: + +``` +mvn clean assembly:single +``` + +Optionally, you can set up your settings as environment variables: + +``` +export PROJECT_ID= +export LOCATION_ID= +export QUEUE_ID= +``` + +Next, create a task for a queue: + +``` +mvn exec:java -Dexec.mainClass="com.example.Quickstart" \ + -Dexec.args="create-task --project $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID" +``` + +Finally, pull and acknowledge a task: + +``` +mvn exec:java -Dexec.mainClass="com.example.task.Quickstart" \ + -Dexec.args="lease-and-ack-task --project $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID" +``` +Note that usually, there would be a processing step in between pulling a task and acknowledging it. From 61817585484358a65b26dd5ef3264949aa4edbc4 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Mon, 16 Jul 2018 16:11:08 -0700 Subject: [PATCH 2/3] update endpoint and env var --- appengine-java8/tasks/README.md | 8 ++++---- tasks/README.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/appengine-java8/tasks/README.md b/appengine-java8/tasks/README.md index a669a2541cd..b5c548dc5bc 100644 --- a/appengine-java8/tasks/README.md +++ b/appengine-java8/tasks/README.md @@ -61,7 +61,7 @@ Set environment variables: First, your project ID: ``` -export PROJECT_ID=my-project-id +export GOOGLE_CLOUD_PROJECT=my-project-id ``` Then the queue ID, as specified at queue creation time. Queue IDs already @@ -81,11 +81,11 @@ location is "us-central1"). export LOCATION_ID=us-central1 ``` -Create a task, targeted at the `log_payload` endpoint, with a payload specified: +Create a task, targeted at the `/tasks/create` endpoint, with a payload specified: ``` mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ - -Dexec.args="--project-id $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID --payload hello" + -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID --payload hello" ``` The App Engine app serves as a target for the push requests. It has an @@ -101,5 +101,5 @@ Create a task that will be scheduled for a time in the future using the ``` mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ - -Dexec.args="--project-id $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID --payload hello --in-seconds 30" + -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID --payload hello --in-seconds 30" ``` diff --git a/tasks/README.md b/tasks/README.md index 4140ba4c7fd..bf6432a03a4 100644 --- a/tasks/README.md +++ b/tasks/README.md @@ -43,7 +43,7 @@ mvn clean assembly:single Optionally, you can set up your settings as environment variables: ``` -export PROJECT_ID= +export GOOGLE_CLOUD_PROJECT= export LOCATION_ID= export QUEUE_ID= ``` @@ -52,13 +52,13 @@ Next, create a task for a queue: ``` mvn exec:java -Dexec.mainClass="com.example.Quickstart" \ - -Dexec.args="create-task --project $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID" + -Dexec.args="create-task --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" ``` Finally, pull and acknowledge a task: ``` mvn exec:java -Dexec.mainClass="com.example.task.Quickstart" \ - -Dexec.args="lease-and-ack-task --project $PROJECT_ID --queue $QUEUE_ID --location $LOCATION_ID" + -Dexec.args="lease-and-ack-task --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" ``` Note that usually, there would be a processing step in between pulling a task and acknowledging it. From e55748d07ddd2e64cba08231c0de14dcdea7fd36 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Tue, 17 Jul 2018 10:51:17 -0700 Subject: [PATCH 3/3] remove app viewing command --- appengine-java8/tasks/README.md | 18 +++++++----------- tasks/README.md | 10 ++++++---- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/appengine-java8/tasks/README.md b/appengine-java8/tasks/README.md index b5c548dc5bc..adc934dc74b 100644 --- a/appengine-java8/tasks/README.md +++ b/appengine-java8/tasks/README.md @@ -48,20 +48,14 @@ mvn appengine:run mvn appengine:deploy ``` -Verify the index page is serving: - -``` -gcloud app browse -``` - -## Running the Samples +## Running the Sample Set environment variables: First, your project ID: ``` -export GOOGLE_CLOUD_PROJECT=my-project-id +export GOOGLE_CLOUD_PROJECT= ``` Then the queue ID, as specified at queue creation time. Queue IDs already @@ -78,14 +72,15 @@ the "name" value (for instance, if the name is location is "us-central1"). ``` -export LOCATION_ID=us-central1 +export LOCATION_ID= ``` Create a task, targeted at the `/tasks/create` endpoint, with a payload specified: ``` mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ - -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID --payload hello" + -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT \ + --queue $QUEUE_ID --location $LOCATION_ID --payload hello" ``` The App Engine app serves as a target for the push requests. It has an @@ -101,5 +96,6 @@ Create a task that will be scheduled for a time in the future using the ``` mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" \ - -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID --payload hello --in-seconds 30" + -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT \ + --queue $QUEUE_ID --location $LOCATION_ID --payload hello --in-seconds 30" ``` diff --git a/tasks/README.md b/tasks/README.md index bf6432a03a4..975fa73d16a 100644 --- a/tasks/README.md +++ b/tasks/README.md @@ -37,7 +37,7 @@ In this example, the queue will be named `my-pull-queue`. From the project folder, build your project with: ``` -mvn clean assembly:single +mvn clean install ``` Optionally, you can set up your settings as environment variables: @@ -45,20 +45,22 @@ Optionally, you can set up your settings as environment variables: ``` export GOOGLE_CLOUD_PROJECT= export LOCATION_ID= -export QUEUE_ID= +export QUEUE_ID=my-pull-queue ``` Next, create a task for a queue: ``` mvn exec:java -Dexec.mainClass="com.example.Quickstart" \ - -Dexec.args="create-task --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" + -Dexec.args="create-task \ + --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" ``` Finally, pull and acknowledge a task: ``` mvn exec:java -Dexec.mainClass="com.example.task.Quickstart" \ - -Dexec.args="lease-and-ack-task --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" + -Dexec.args="lease-and-ack-task \ + --project $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID" ``` Note that usually, there would be a processing step in between pulling a task and acknowledging it.