/** * 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()); } }
String message = String.format("Title: %s, Diff: %s", matcher.group(1), matcher.group(2)); pubsubMessage.encodeData(message.getBytes("UTF-8")); } else { pubsubMessage.encodeData(line.getBytes("UTF-8"));
message.encodeData(((String) body).getBytes("UTF-8")); } else if (body instanceof byte[]) { message.encodeData((byte[]) body); } else { message.encodeData(serialize(body));
/** * 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) { ; } }
/** * Publish 'numMessages' arbitrary events from live users with the provided delay, to a PubSub * topic. */ public static void publishData(int numMessages, int delayInMillis) throws IOException { List<PubsubMessage> pubsubMessages = new ArrayList<>(); for (int i = 0; i < Math.max(1, numMessages); i++) { Long currTime = System.currentTimeMillis(); String message = generateEvent(currTime, delayInMillis); PubsubMessage pubsubMessage = new PubsubMessage().encodeData(message.getBytes("UTF-8")); pubsubMessage.setAttributes( ImmutableMap.of( GameConstants.TIMESTAMP_ATTRIBUTE, Long.toString((currTime - delayInMillis) / 1000 * 1000))); if (delayInMillis != 0) { System.out.println(pubsubMessage.getAttributes()); System.out.println("late data for: " + message); } pubsubMessages.add(pubsubMessage); } PublishRequest publishRequest = new PublishRequest(); publishRequest.setMessages(pubsubMessages); pubsub.projects().topics().publish(topic, publishRequest).execute(); }
@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 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); } } }
@Test public void publishOneMessage() throws IOException { String expectedTopic = TOPIC.getPath(); PubsubMessage expectedPubsubMessage = new PubsubMessage() .encodeData(DATA.getBytes(StandardCharsets.UTF_8)) .setAttributes( ImmutableMap.<String, String>builder() .put(TIMESTAMP_ATTRIBUTE, String.valueOf(MESSAGE_TIME)) .put(ID_ATTRIBUTE, RECORD_ID) .put("k", "v") .build()); PublishRequest expectedRequest = new PublishRequest().setMessages(ImmutableList.of(expectedPubsubMessage)); PublishResponse expectedResponse = new PublishResponse().setMessageIds(ImmutableList.of(MESSAGE_ID)); when((Object) (mockPubsub.projects().topics().publish(expectedTopic, expectedRequest).execute())) .thenReturn(expectedResponse); Map<String, String> attrs = new HashMap<>(); attrs.put("k", "v"); OutgoingMessage actualMessage = new OutgoingMessage(DATA.getBytes(StandardCharsets.UTF_8), attrs, MESSAGE_TIME, RECORD_ID); int n = client.publish(TOPIC, ImmutableList.of(actualMessage)); assertEquals(1, n); }
pubsubMessage.encodeData(finalOutput.getBytes("UTF-8")); } catch (java.io.UnsupportedEncodingException e) {
@Test public void publishOneMessageWithOnlyTimestampAndIdAttributes() throws IOException { String expectedTopic = TOPIC.getPath(); PubsubMessage expectedPubsubMessage = new PubsubMessage() .encodeData(DATA.getBytes(StandardCharsets.UTF_8)) .setAttributes( ImmutableMap.<String, String>builder() .put(TIMESTAMP_ATTRIBUTE, String.valueOf(MESSAGE_TIME)) .put(ID_ATTRIBUTE, RECORD_ID) .build()); PublishRequest expectedRequest = new PublishRequest().setMessages(ImmutableList.of(expectedPubsubMessage)); PublishResponse expectedResponse = new PublishResponse().setMessageIds(ImmutableList.of(MESSAGE_ID)); when((Object) (mockPubsub.projects().topics().publish(expectedTopic, expectedRequest).execute())) .thenReturn(expectedResponse); OutgoingMessage actualMessage = new OutgoingMessage( DATA.getBytes(StandardCharsets.UTF_8), ImmutableMap.of(), MESSAGE_TIME, RECORD_ID); int n = client.publish(TOPIC, ImmutableList.of(actualMessage)); assertEquals(1, n); }
@Test public void publishOneMessageWithNoTimestampOrIdAttribute() throws IOException { // For this test, create a new PubsubJsonClient without the timestamp attribute // or id attribute set. client = new PubsubJsonClient(null, null, mockPubsub); String expectedTopic = TOPIC.getPath(); PubsubMessage expectedPubsubMessage = new PubsubMessage() .encodeData(DATA.getBytes(StandardCharsets.UTF_8)) .setAttributes(ImmutableMap.<String, String>builder().put("k", "v").build()); PublishRequest expectedRequest = new PublishRequest().setMessages(ImmutableList.of(expectedPubsubMessage)); PublishResponse expectedResponse = new PublishResponse().setMessageIds(ImmutableList.of(MESSAGE_ID)); when((Object) (mockPubsub.projects().topics().publish(expectedTopic, expectedRequest).execute())) .thenReturn(expectedResponse); Map<String, String> attrs = new HashMap<>(); attrs.put("k", "v"); OutgoingMessage actualMessage = new OutgoingMessage(DATA.getBytes(StandardCharsets.UTF_8), attrs, MESSAGE_TIME, RECORD_ID); int n = client.publish(TOPIC, ImmutableList.of(actualMessage)); assertEquals(1, n); }
new PubsubMessage() .setMessageId(MESSAGE_ID) .encodeData(DATA.getBytes(StandardCharsets.UTF_8)) .setPublishTime(String.valueOf(PUB_TIME)) .setAttributes(