From 223856e871049b2e84be886ab6a58d9fe73435f2 Mon Sep 17 00:00:00 2001 From: Solomon Duskis Date: Tue, 30 Apr 2019 12:06:05 -0400 Subject: [PATCH] Pub/Sub: Streamining publisher proto creation. Using a prebuit List is faster than adding elements one at a time to a proto list. --- .../com/google/cloud/pubsub/v1/Publisher.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java index 2ec77aaa9d2b..90b010bc4b17 100644 --- a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java +++ b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java @@ -272,13 +272,13 @@ public void publishAllOutstanding() { } private ApiFuture publishCall(OutstandingBatch outstandingBatch) { - PublishRequest.Builder publishRequest = PublishRequest.newBuilder(); - publishRequest.setTopic(topicName); - for (OutstandingPublish outstandingPublish : outstandingBatch.outstandingPublishes) { - publishRequest.addMessages(outstandingPublish.message); - } - - return publisherStub.publishCallable().futureCall(publishRequest.build()); + return publisherStub + .publishCallable() + .futureCall( + PublishRequest.newBuilder() + .setTopic(topicName) + .addAllMessages(outstandingBatch.getMessages()) + .build()); } private void publishOutstandingBatch(final OutstandingBatch outstandingBatch) { @@ -342,6 +342,14 @@ private static final class OutstandingBatch { int size() { return outstandingPublishes.size(); } + + private List getMessages() { + List results = new ArrayList<>(outstandingPublishes.size()); + for (OutstandingPublish outstandingPublish : outstandingPublishes) { + results.add(outstandingPublish.message); + } + return results; + } } private static final class OutstandingPublish {