Skip to content

Commit d2f0bc6

Browse files
authored
Pub/Sub: Streamining publisher proto creation. (#5040)
Using a prebuit List is faster than adding elements one at a time to a proto list.
1 parent ff068a9 commit d2f0bc6

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

  • google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1

google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,13 @@ public void publishAllOutstanding() {
272272
}
273273

274274
private ApiFuture<PublishResponse> publishCall(OutstandingBatch outstandingBatch) {
275-
PublishRequest.Builder publishRequest = PublishRequest.newBuilder();
276-
publishRequest.setTopic(topicName);
277-
for (OutstandingPublish outstandingPublish : outstandingBatch.outstandingPublishes) {
278-
publishRequest.addMessages(outstandingPublish.message);
279-
}
280-
281-
return publisherStub.publishCallable().futureCall(publishRequest.build());
275+
return publisherStub
276+
.publishCallable()
277+
.futureCall(
278+
PublishRequest.newBuilder()
279+
.setTopic(topicName)
280+
.addAllMessages(outstandingBatch.getMessages())
281+
.build());
282282
}
283283

284284
private void publishOutstandingBatch(final OutstandingBatch outstandingBatch) {
@@ -342,6 +342,14 @@ private static final class OutstandingBatch {
342342
int size() {
343343
return outstandingPublishes.size();
344344
}
345+
346+
private List<PubsubMessage> getMessages() {
347+
List<PubsubMessage> results = new ArrayList<>(outstandingPublishes.size());
348+
for (OutstandingPublish outstandingPublish : outstandingPublishes) {
349+
results.add(outstandingPublish.message);
350+
}
351+
return results;
352+
}
345353
}
346354

347355
private static final class OutstandingPublish {

0 commit comments

Comments
 (0)