From 696e745f37f987fddbdc587c310cbb31d8fdfbe9 Mon Sep 17 00:00:00 2001 From: Jean de Klerk Date: Thu, 5 Apr 2018 18:49:32 -0700 Subject: [PATCH 1/2] internal: improve pubsub javadoc Specifically show creation of executor, rather than leaving it up to the reader to figure out how to create an executor. --- .../examples/pubsub/snippets/SubscriberSnippets.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java index 5118720e858f..b65d6afd26cc 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java @@ -32,9 +32,9 @@ import com.google.cloud.pubsub.v1.AckReplyConsumer; import com.google.cloud.pubsub.v1.MessageReceiver; import com.google.cloud.pubsub.v1.Subscriber; -import com.google.cloud.pubsub.v1.stub.SubscriberStubSettings; import com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub; import com.google.cloud.pubsub.v1.stub.SubscriberStub; +import com.google.cloud.pubsub.v1.stub.SubscriberStubSettings; import com.google.common.util.concurrent.MoreExecutors; import com.google.pubsub.v1.AcknowledgeRequest; import com.google.pubsub.v1.ProjectSubscriptionName; @@ -45,7 +45,7 @@ import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.Executor; +import java.util.concurrent.Executors; /** This class contains snippets for the {@link Subscriber} interface. */ public class SubscriberSnippets { @@ -56,17 +56,13 @@ public class SubscriberSnippets { private final ApiFuture done; - private final Executor executor; - public SubscriberSnippets( ProjectSubscriptionName subscriptionName, MessageReceiver receiver, - ApiFuture done, - Executor executor) { + ApiFuture done) { this.subscriptionName = subscriptionName; this.receiver = receiver; this.done = done; - this.executor = executor; } // [TARGET startAsync()] @@ -78,7 +74,7 @@ public void failed(Subscriber.State from, Throwable failure) { // Handle error. } }, - executor); + Executors.newCachedThreadPool()); subscriber.startAsync(); // Wait for a stop signal. From b1971264dd6004ae0cc245837a1c3929428b3606 Mon Sep 17 00:00:00 2001 From: Jean de Klerk Date: Sat, 7 Apr 2018 15:43:32 -0700 Subject: [PATCH 2/2] Fix compilation errors, add executor pool shutdown --- .../cloud/examples/pubsub/snippets/SubscriberSnippets.java | 5 ++++- .../cloud/examples/pubsub/snippets/ITPubSubSnippets.java | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java index b65d6afd26cc..5f26d3ed6a3a 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java @@ -45,6 +45,7 @@ import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** This class contains snippets for the {@link Subscriber} interface. */ @@ -68,13 +69,14 @@ public SubscriberSnippets( // [TARGET startAsync()] public void startAndWait() throws Exception { Subscriber subscriber = Subscriber.newBuilder(subscriptionName, receiver).build(); + ExecutorService pool = Executors.newCachedThreadPool(); subscriber.addListener( new Subscriber.Listener() { public void failed(Subscriber.State from, Throwable failure) { // Handle error. } }, - Executors.newCachedThreadPool()); + pool); subscriber.startAsync(); // Wait for a stop signal. @@ -93,6 +95,7 @@ public void failed(Subscriber.State from, Throwable failure) { // } // at the end of main() to previent the main thread from exiting. done.get(); + pool.shutdown(); subscriber.stopAsync().awaitTerminated(); } diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java index 0b5df9356bf7..ba173ca717f3 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java @@ -108,8 +108,7 @@ public void onFailure(Throwable t) { new SubscriberSnippets( subscriptionName, new MessageReceiverSnippets(queue).messageReceiver(), - done, - MoreExecutors.directExecutor()); + done); new Thread( new Runnable() { @Override