private Message<StepExecutionRequest> createMessage(int sequenceNumber, int sequenceSize, StepExecutionRequest stepExecutionRequest, PollableChannel replyChannel) { return MessageBuilder.withPayload(stepExecutionRequest).setSequenceNumber(sequenceNumber) .setSequenceSize(sequenceSize) .setCorrelationId(stepExecutionRequest.getJobExecutionId() + ":" + stepExecutionRequest.getStepName()) .setReplyChannel(replyChannel) .build(); } }
@SuppressWarnings("unused") public Message<?> handle(Message<?> message) { return MessageBuilder.fromMessage(message) .setCorrelationId("ABC-123").build(); } }, "handle");
@Test public void completesIfNoSequence() throws Exception { defaultHandler.setReleaseStrategy(new MessageCountReleaseStrategy(2)); Message<?> message1 = MessageBuilder.withPayload(1).setCorrelationId("foo").build(); Message<?> message2 = MessageBuilder.withPayload(2).setCorrelationId("foo").build(); Message<?> message3 = MessageBuilder.withPayload(3).setCorrelationId("foo").build(); defaultHandler.handleMessage(message1); verify(outputChannel, never()).send(message3); defaultHandler.handleMessage(message2); verify(outputChannel).send(message2); defaultHandler.handleMessage(message3); verify(outputChannel, never()).send(message3); }
private Message<?> correlatedMessage(Object correlationId, Integer sequenceSize, Integer sequenceNumber) { return MessageBuilder.withPayload("test") .setCorrelationId(correlationId) .setSequenceNumber(sequenceNumber) .setSequenceSize(sequenceSize) .build(); }
@Test @Transactional public void testOrderInMessageGroup() throws Exception { String groupId = "X"; messageStore.addMessageToGroup(groupId, MessageBuilder.withPayload("foo").setCorrelationId(groupId).build()); Thread.sleep(1); messageStore.addMessageToGroup(groupId, MessageBuilder.withPayload("bar").setCorrelationId(groupId).build()); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(2, group.size()); assertEquals("foo", messageStore.pollMessageFromGroup(groupId).getPayload()); assertEquals("bar", messageStore.pollMessageFromGroup(groupId).getPayload()); }
@Test public void testResequencerRefServiceActivator() { MessageChannel inputChannel = context.getBean("inputChannel", MessageChannel.class); QueueChannel outputChannel = context.getBean("outputChannel", QueueChannel.class); Message<?> message1 = MessageBuilder.withPayload("1").setCorrelationId("A").setSequenceNumber(1).build(); inputChannel.send(message1); message1 = outputChannel.receive(0); assertNotNull(message1); assertEquals(1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber()); }
@Test @Transactional public void testAddAndUpdate() throws Exception { Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId("X").build(); message = messageStore.addMessage(message); message = MessageBuilder.fromMessage(message).setCorrelationId("Y").build(); message = messageStore.addMessage(message); assertEquals("Y", new IntegrationMessageHeaderAccessor(messageStore.getMessage(message.getHeaders().getId())).getCorrelationId()); }
@Test public void testWithAggregator() { this.aggChannel.send(MessageBuilder.withPayload("foo") .setCorrelationId("bar") .setSequenceSize(2) .setSequenceNumber(1) .build()); Message<?> discard = this.discards.receive(10000); assertNotNull(discard); assertEquals("foo", discard.getPayload()); }
@Test public void testAddAndUpdate() throws Exception { Message<?> message = MessageBuilder.withPayload("foo").setCorrelationId("X").build(); message = messageStore.addMessage(message); message = MessageBuilder.fromMessage(message).setCorrelationId("Y").build(); message = messageStore.addMessage(message); message = messageStore.getMessage(message.getHeaders().getId()); assertEquals("Y", new IntegrationMessageHeaderAccessor(message).getCorrelationId()); }
private static <T> Message<T> createMessage(T payload, Object correlationId, int sequenceSize, int sequenceNumber, MessageChannel outputChannel) { return MessageBuilder.withPayload(payload).setCorrelationId(correlationId).setSequenceSize(sequenceSize) .setSequenceNumber(sequenceNumber).setReplyChannel(outputChannel).build(); }
private static <T> Message<T> createMessage(T payload, Object correlationId, int sequenceSize, int sequenceNumber, MessageChannel outputChannel) { return MessageBuilder.withPayload(payload) .setCorrelationId(correlationId) .setSequenceSize(sequenceSize) .setSequenceNumber(sequenceNumber) .setReplyChannel(outputChannel).build(); }
private static <T> Message<T> createMessage(T payload, Object correlationId, int sequenceSize, int sequenceNumber, MessageChannel outputChannel) { return MessageBuilder.withPayload(payload).setCorrelationId(correlationId).setSequenceSize(sequenceSize) .setSequenceNumber(sequenceNumber).setReplyChannel(outputChannel).build(); }
private static Message<?> correlatedMessage(Object correlationId, Integer sequenceSize, Integer sequenceNumber, Map<String, Object> headers) { return MessageBuilder.withPayload("test") .setCorrelationId(correlationId) .setSequenceNumber(sequenceNumber) .setSequenceSize(sequenceSize) .copyHeadersIfAbsent(headers) .build(); }
private static Message<?> createMessage(String payload, Object correlationId, int sequenceSize, int sequenceNumber, MessageChannel replyChannel) { return MessageBuilder.withPayload(payload).setCorrelationId(correlationId).setSequenceSize(sequenceSize) .setSequenceNumber(sequenceNumber).setReplyChannel(replyChannel).build(); }
@Test @Transactional public void testAddAndGetMessageGroup() throws Exception { String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); long now = System.currentTimeMillis(); messageStore.addMessageToGroup(groupId, message); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(1, group.size()); assertTrue("Timestamp too early: " + group.getTimestamp() + "<" + now, group.getTimestamp() >= now); }
@Test @Transactional public void testAddAndRemoveMessageFromMessageGroup() throws Exception { String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessageToGroup(groupId, message); messageStore.removeMessagesFromGroup(groupId, message); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(0, group.size()); }
@Test @Transactional public void testUpdateLastReleasedSequence() throws Exception { String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessageToGroup(groupId, message); messageStore.setLastReleasedSequenceNumberForGroup(groupId, 5); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(5, group.getLastReleasedMessageSequenceNumber()); }
private static Message<?> createMessage(Object payload, Object correlationId, int sequenceSize, int sequenceNumber, MessageChannel replyChannel, String predefinedId) { MessageBuilder<Object> builder = MessageBuilder.withPayload(payload).setCorrelationId(correlationId) .setSequenceSize(sequenceSize).setSequenceNumber(sequenceNumber).setReplyChannel(replyChannel); if (predefinedId != null) { builder.setHeader(MessageHeaders.ID, predefinedId); } return builder.build(); }
@Test public void testPushAndPopSequenceDetailsWhenNoSequence() throws Exception { Message<Integer> message1 = MessageBuilder.withPayload(1).setCorrelationId("foo").build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testUpdateLastReleasedSequence() throws Exception { String groupId = "X"; Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build(); messageStore.addMessagesToGroup(groupId, message); messageStore.setLastReleasedSequenceNumberForGroup(groupId, 5); MessageGroup group = messageStore.getMessageGroup(groupId); assertEquals(5, group.getLastReleasedMessageSequenceNumber()); }