in src/main/java/com/googlesource/gerrit/plugins/pubsub/PubSubPublisher.java [75:103]
private ListenableFuture<Boolean> publishAsync(PubsubMessage pubsubMessage) {
ApiFuture<String> publish = publisher.publish(pubsubMessage);
ApiFutures.addCallback(
publish,
new ApiFutureCallback<String>() {
@Override
public void onFailure(Throwable t) {
logger.atSevere().withCause(t).log(
"Exception when publishing message (id:%s) to topic '%s' [message: %s]",
pubsubMessage.getMessageId(), topic, pubsubMessage.getData().toStringUtf8());
publisherMetrics.incrementFailedToPublishMessage();
}
@Override
public void onSuccess(String messageId) {
logger.atFine().log(
"Successfully published message (id:%s) to topic '%s' [message: %s]",
messageId, topic, pubsubMessage.getData().toStringUtf8());
publisherMetrics.incrementSucceedToPublishMessage();
}
},
MoreExecutors.directExecutor());
return Futures.transform(
JdkFutureAdapters.listenInPoolThread(publish),
Objects::nonNull,
MoreExecutors.directExecutor());
}