/** Example of publishing a message. */ // [TARGET publish(PubsubMessage)] // [VARIABLE "my_message"] public ApiFuture<String> publish(String message) { ByteString data = ByteString.copyFromUtf8(message); PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); ApiFuture<String> messageIdFuture = publisher.publish(pubsubMessage); ApiFutures.addCallback( messageIdFuture, new ApiFutureCallback<String>() { public void onSuccess(String messageId) { System.out.println("published with message id: " + messageId); } public void onFailure(Throwable t) { System.out.println("failed to publish: " + t); } }, Executors.newSingleThreadExecutor()); return messageIdFuture; }
@Override public void sendAsync(RowMap r, AbstractAsyncProducer.CallbackCompleter cc) throws Exception { String message = r.toJSON(outputConfig); ByteString data = ByteString.copyFromUtf8(message); PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); if ( r instanceof DDLMap ) { ApiFuture<String> apiFuture = ddlPubsub.publish(pubsubMessage); PubsubCallback callback = new PubsubCallback(cc, r.getNextPosition(), message, this.succeededMessageCount, this.failedMessageCount, this.succeededMessageMeter, this.failedMessageMeter, this.context); ApiFutures.addCallback(apiFuture, callback); } else { ApiFuture<String> apiFuture = pubsub.publish(pubsubMessage); PubsubCallback callback = new PubsubCallback(cc, r.getNextPosition(), message, this.succeededMessageCount, this.failedMessageCount, this.succeededMessageMeter, this.failedMessageMeter, this.context); ApiFutures.addCallback(apiFuture, callback); } }
ApiFuture<String> messageIdFuture = publisher.publish(pubsubMessage); messageIdFutures.add(messageIdFuture);
private ApiFuture<String> sendTestMessage(Publisher publisher, String data) { return publisher.publish( PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(data)).build()); }
.build(); ApiFuture<String> messageIdFuture = publisher.publish(message);
ApiFuture<String> future = publisher.publish(pubsubMessage);
@Test public void testPublishByNumBatchedMessages() throws Exception { Publisher publisher = getTestPublisherBuilder() .setBatchingSettings( Publisher.Builder.DEFAULT_BATCHING_SETTINGS .toBuilder() .setElementCountThreshold(2L) .setDelayThreshold(Duration.ofSeconds(100)) .build()) .build(); testPublisherServiceImpl .addPublishResponse(PublishResponse.newBuilder().addMessageIds("1").addMessageIds("2")) .addPublishResponse(PublishResponse.newBuilder().addMessageIds("3").addMessageIds("4")); ApiFuture<String> publishFuture1 = sendTestMessage(publisher, "A"); ApiFuture<String> publishFuture2 = sendTestMessage(publisher, "B"); ApiFuture<String> publishFuture3 = sendTestMessage(publisher, "C"); // Note we are not advancing time but message should still get published assertEquals("1", publishFuture1.get()); assertEquals("2", publishFuture2.get()); assertFalse(publishFuture3.isDone()); ApiFuture<String> publishFuture4 = publisher.publish(PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8("D")).build()); assertEquals("3", publishFuture3.get()); assertEquals("4", publishFuture4.get()); assertEquals(2, testPublisherServiceImpl.getCapturedRequests().get(0).getMessagesCount()); assertEquals(2, testPublisherServiceImpl.getCapturedRequests().get(1).getMessagesCount()); publisher.shutdown(); publisher.awaitTermination(1, TimeUnit.MINUTES); }
ApiFuture<String> future = publisher.publish(pubsubMessage); futures.add(future);
/** Publish all the messages in a partition and store the Future's for each publish request. */ private void publishMessage(String topic, Integer partition, PubsubMessage message) { // Get a map containing all futures per partition for the passed in topic. Map<Integer, OutstandingFuturesForPartition> outstandingFuturesForTopic = allOutstandingFutures.get(topic); if (outstandingFuturesForTopic == null) { outstandingFuturesForTopic = new HashMap<>(); allOutstandingFutures.put(topic, outstandingFuturesForTopic); } // Get the object containing the outstanding futures for this topic and partition.. OutstandingFuturesForPartition outstandingFutures = outstandingFuturesForTopic.get(partition); if (outstandingFutures == null) { outstandingFutures = new OutstandingFuturesForPartition(); outstandingFuturesForTopic.put(partition, outstandingFutures); } outstandingFutures.futures.add(publisher.publish(message)); }
@Override public ListenableFuture<String> publish(final String topic, PubsubMessage pubsubMessage) { Assert.hasText(topic, "The topic can't be null or empty."); Assert.notNull(pubsubMessage, "The pubsubMessage can't be null."); ApiFuture<String> publishFuture = this.publisherFactory.createPublisher(topic).publish(pubsubMessage); final SettableListenableFuture<String> settableFuture = new SettableListenableFuture<>(); ApiFutures.addCallback(publishFuture, new ApiFutureCallback<String>() { @Override public void onFailure(Throwable throwable) { LOGGER.warn("Publishing to " + topic + " topic failed.", throwable); settableFuture.setException(throwable); } @Override public void onSuccess(String result) { if (LOGGER.isDebugEnabled()) { LOGGER.debug( "Publishing to " + topic + " was successful. Message ID: " + result); } settableFuture.set(result); } }); return settableFuture; }
@Override public ListenableFuture<String> publish(final String topic, PubsubMessage pubsubMessage) { Assert.hasText(topic, "The topic can't be null or empty."); Assert.notNull(pubsubMessage, "The pubsubMessage can't be null."); ApiFuture<String> publishFuture = this.publisherFactory.createPublisher(topic).publish(pubsubMessage); final SettableListenableFuture<String> settableFuture = new SettableListenableFuture<>(); ApiFutures.addCallback(publishFuture, new ApiFutureCallback<String>() { @Override public void onFailure(Throwable throwable) { LOGGER.warn("Publishing to " + topic + " topic failed.", throwable); settableFuture.setException(throwable); } @Override public void onSuccess(String result) { if (LOGGER.isDebugEnabled()) { LOGGER.debug( "Publishing to " + topic + " was successful. Message ID: " + result); } settableFuture.set(result); } }); return settableFuture; }
private void publishPubSub(ByteString bytes) { final ApiFuture<String> publish = publisher.publish( PubsubMessage.newBuilder().setData(bytes).build()); ApiFutures.addCallback(publish, new ApiFutureCallback<String>() { @Override public void onFailure(Throwable t) { log.error("Failed sending metrics {}", t.getMessage()); } @Override public void onSuccess(String messageId) { } }, executorService); }
.publish( PubsubMessage.newBuilder() .setData(payload)
public void publish(String jsonPayload, Map<String, String> attributes) { PubsubMessage message = PubsubMessage.newBuilder() .setData(ByteString.copyFromUtf8(jsonPayload)) .putAllAttributes(attributes) .build(); log.debug("Publishing message on Google Pubsub topic {}", this.getFullTopicName()); ApiFuture<String> future = publisher.publish(message); ApiFutures.addCallback(future, new PublishCallback(this.getFullTopicName())); }