PubsubMessage pubsubMessage = receivedMessage.getMessage(); exchange.getIn().setBody(body); exchange.getIn().setHeader(GooglePubsubConstants.ACK_ID, receivedMessage.getAckId()); exchange.getIn().setHeader(GooglePubsubConstants.MESSAGE_ID, pubsubMessage.getMessageId()); exchange.getIn().setHeader(GooglePubsubConstants.PUBLISH_TIME, pubsubMessage.getPublishTime()); if (null != receivedMessage.getMessage().getAttributes()) { exchange.getIn().setHeader(GooglePubsubConstants.ATTRIBUTES, receivedMessage.getMessage().getAttributes());
@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); }
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));
PubsubMessage pubsubMessage = message.getMessage(); @Nullable Map<String, String> attributes = pubsubMessage.getAttributes(); extractTimestamp(timestampAttribute, message.getMessage().getPublishTime(), attributes); String ackId = message.getAckId(); checkState(!Strings.isNullOrEmpty(ackId));
@ProcessElement public void processElement(ProcessContext context) { int num = 0; Instant endTime = Instant.now().plus(maxTime); while (num < maxNum && Instant.now().isBefore(endTime)) { try { List<String> ackIds = new ArrayList<>(); List<ReceivedMessage> receivedMessages = client.pull(spec.getDatasetProperties().subscription.getValue(), maxNum - num); if (receivedMessages == null) { continue; } for (ReceivedMessage receivedMessage : receivedMessages) { context.output(new PubsubMessage(receivedMessage.getMessage().decodeData(), ImmutableMap.<String, String> of())); ackIds.add(receivedMessage.getAckId()); num++; } if (ack && !ackIds.isEmpty()) { // do not call this when getSample, else the message will be removed client.ack(spec.getDatasetProperties().subscription.getValue(), ackIds); } } catch (IOException e) { throw TalendRuntimeException.createUnexpectedException(e); } } } }
for (ReceivedMessage receivedMessage : receivedMessages) { PubsubMessage pubsubMessage = receivedMessage.getMessage(); if (pubsubMessage != null && pubsubMessage.decodeData() != null) { "UTF-8")); ackIds.add(receivedMessage.getAckId());