@Override public int publish(TopicPath topic, List<OutgoingMessage> outgoingMessages) throws IOException { List<PubsubMessage> pubsubMessages = new ArrayList<>(outgoingMessages.size()); for (OutgoingMessage outgoingMessage : outgoingMessages) { PubsubMessage pubsubMessage = new PubsubMessage().encodeData(outgoingMessage.elementBytes); pubsubMessage.setAttributes(getMessageAttributes(outgoingMessage)); pubsubMessages.add(pubsubMessage); } PublishRequest request = new PublishRequest().setMessages(pubsubMessages); PublishResponse response = pubsub.projects().topics().publish(topic.getPath(), request).execute(); return response.getMessageIds().size(); }
/** * Publishes the given message to a Cloud Pub/Sub topic. */ public void publishMessage(String message, String outputTopic) { int maxLogMessageLength = 200; if (message.length() < maxLogMessageLength) { maxLogMessageLength = message.length(); } logger.info("Received ...." + message.substring(0, maxLogMessageLength)); // Publish message to Pubsub. PubsubMessage pubsubMessage = new PubsubMessage(); pubsubMessage.encodeData(message.getBytes()); PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopic(outputTopic).setMessage(pubsubMessage); try { this.pubsub.topics().publish(publishRequest).execute(); } catch (java.io.IOException e) { ; } }
public List<ReceivedMessage> pull(String subscription, int maxNum) throws IOException { PullResponse response = client.projects().subscriptions() .pull(getSubscriptionPath(subscription), new PullRequest().setReturnImmediately(false).setMaxMessages(maxNum)) .execute(); return response.getReceivedMessages(); }
String subscriptionName = PubsubUtils.getFullyQualifiedResourceName( PubsubUtils.ResourceType.SUBSCRIPTION, args[0], args[2]); PullRequest pullRequest = new PullRequest() .setReturnImmediately(false) .setMaxMessages(Main.BATCH_SIZE); List<String> ackIds = new ArrayList<>(Main.BATCH_SIZE); List<ReceivedMessage> receivedMessages = pullResponse.getReceivedMessages(); if (receivedMessages != null) { for (ReceivedMessage receivedMessage : receivedMessages) { PubsubMessage pubsubMessage = receivedMessage.getMessage(); if (pubsubMessage != null && pubsubMessage.decodeData() != null) { System.out.println( new String(pubsubMessage.decodeData(), "UTF-8")); ackIds.add(receivedMessage.getAckId()); AcknowledgeRequest ackRequest = new AcknowledgeRequest(); ackRequest.setAckIds(ackIds); client.projects().subscriptions() .acknowledge(subscriptionName, ackRequest)
@Test public void pullOneMessageWithNoData() throws IOException { String expectedSubscription = SUBSCRIPTION.getPath(); PullRequest expectedRequest = new PullRequest().setReturnImmediately(true).setMaxMessages(10); PubsubMessage expectedPubsubMessage = new PubsubMessage() .setMessageId(MESSAGE_ID) .setPublishTime(String.valueOf(PUB_TIME)) .setAttributes( ImmutableMap.of( TIMESTAMP_ATTRIBUTE, String.valueOf(MESSAGE_TIME), ID_ATTRIBUTE, RECORD_ID)); ReceivedMessage expectedReceivedMessage = new ReceivedMessage().setMessage(expectedPubsubMessage).setAckId(ACK_ID); PullResponse expectedResponse = new PullResponse().setReceivedMessages(ImmutableList.of(expectedReceivedMessage)); Mockito.when( (Object) (mockPubsub .projects() .subscriptions() .pull(expectedSubscription, expectedRequest) .execute())) .thenReturn(expectedResponse); List<IncomingMessage> acutalMessages = client.pull(REQ_TIME, SUBSCRIPTION, 10, true); assertEquals(1, acutalMessages.size()); IncomingMessage actualMessage = acutalMessages.get(0); assertArrayEquals(new byte[0], actualMessage.elementBytes); }
@Override public void createSubscription( TopicPath topic, SubscriptionPath subscription, int ackDeadlineSeconds) throws IOException { Subscription request = new Subscription().setTopic(topic.getPath()).setAckDeadlineSeconds(ackDeadlineSeconds); pubsub .projects() .subscriptions() .create(subscription.getPath(), request) .execute(); // ignore Subscription result. }
public void publish(String topic, List<PubsubMessage> messages) throws IOException { PublishRequest request = new PublishRequest().setMessages(messages); PublishResponse response = client.projects().topics().publish(getTopicPath(topic), request).execute(); }
private static Subscription buildSubscription(int i) { Subscription subscription = new Subscription(); subscription.setName( PubsubClient.subscriptionPathFromName(PROJECT.getId(), "Subscription" + i).getPath()); subscription.setTopic(PubsubClient.topicPathFromName(PROJECT.getId(), "Topic" + i).getPath()); return subscription; } }
public void createSubscription(String topic, String subscription) throws IOException { client.projects().subscriptions() .create(getSubscriptionPath(subscription), new Subscription().setTopic(getTopicPath(topic))).execute(); }
if (!response.isEmpty()) { for (Topic topic : response.getTopics()) { hasTopics = true; System.out.println(topic.getName()); nextPageToken = response.getNextPageToken(); } while (nextPageToken != null); if (!hasTopics) {
@Override public void acknowledge(SubscriptionPath subscription, List<String> ackIds) throws IOException { AcknowledgeRequest request = new AcknowledgeRequest().setAckIds(ackIds); pubsub .projects() .subscriptions() .acknowledge(subscription.getPath(), request) .execute(); // ignore Empty result. }
public Set<String> listTopics() throws IOException { ListTopicsResponse listTopicsResponse = client.projects().topics().list(getProjectPath()).execute(); List<Topic> topics = listTopicsResponse.getTopics(); Set<String> topicsName = new HashSet<>(); for (Topic topic : topics) { String topicName = topic.getName(); String[] split = topicName.split("/"); topicsName.add(split[3]); } return topicsName; }
@Override public void createTopic(TopicPath topic) throws IOException { pubsub .projects() .topics() .create(topic.getPath(), new Topic()) .execute(); // ignore Topic result. }
@Override public void modifyAckDeadline( SubscriptionPath subscription, List<String> ackIds, int deadlineSeconds) throws IOException { ModifyAckDeadlineRequest request = new ModifyAckDeadlineRequest().setAckIds(ackIds).setAckDeadlineSeconds(deadlineSeconds); pubsub .projects() .subscriptions() .modifyAckDeadline(subscription.getPath(), request) .execute(); // ignore Empty result. }
@Override public int ackDeadlineSeconds(SubscriptionPath subscription) throws IOException { Subscription response = pubsub.projects().subscriptions().get(subscription.getPath()).execute(); return response.getAckDeadlineSeconds(); }
/** * Publishes the given message to the given topic. * * @param client Cloud Pub/Sub client. * @param args Command line arguments. * @throws IOException when Cloud Pub/Sub API calls fail. */ public static void publishMessage(final Pubsub client, final String[] args) throws IOException { Main.checkArgsLength(args, 4); String topic = PubsubUtils.getFullyQualifiedResourceName( PubsubUtils.ResourceType.TOPIC, args[0], args[2]); String message = args[3]; PubsubMessage pubsubMessage = new PubsubMessage() .encodeData(message.getBytes("UTF-8")); List<PubsubMessage> messages = ImmutableList.of(pubsubMessage); PublishRequest publishRequest = new PublishRequest(); publishRequest.setMessages(messages); PublishResponse publishResponse = client.projects().topics() .publish(topic, publishRequest) .execute(); List<String> messageIds = publishResponse.getMessageIds(); if (messageIds != null) { for (String messageId : messageIds) { System.out.println("Published with a message id: " + messageId); } } }
/** * Publishes the given message to the given topic. */ public void publishMessage(String message, String outputTopic) { int maxLogMessageLength = 200; if (message.length() < maxLogMessageLength) { maxLogMessageLength = message.length(); } logger.info("Received ...." + message.substring(0, maxLogMessageLength)); // Publish message to Pubsub. PubsubMessage pubsubMessage = new PubsubMessage(); pubsubMessage.encodeData(message.getBytes()); PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopic(outputTopic).setMessage(pubsubMessage); try { this.pubsub.topics().publish(publishRequest).execute(); } catch (java.io.IOException e) { logger.warning(e.getStackTrace().toString()); } }
public void ack(String subscription, List<String> ackIds) throws IOException { client.projects().subscriptions() .acknowledge(getSubscriptionPath(subscription), new AcknowledgeRequest().setAckIds(ackIds)).execute(); }
public void createTopic(String topic) throws IOException { client.projects().topics().create(getTopicPath(topic), new Topic()).execute(); }