Example usage for org.springframework.integration.support MessageBuilder withPayload

List of usage examples for org.springframework.integration.support MessageBuilder withPayload

Introduction

In this page you can find the example usage for org.springframework.integration.support MessageBuilder withPayload.

Prototype

public static <T> MessageBuilder<T> withPayload(T payload) 

Source Link

Document

Create a builder for a new Message instance with the provided payload.

Usage

From source file:org.springframework.integration.jdbc.JdbcMessageStoreTests.java

@Test
@Transactional//from w w w. ja v a  2s  . co m
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1), messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2), messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.JdbcMessageStoreTests.java

@Test
@Transactional//from   w ww. ja  v  a  2s .  co m
public void testCompletedNotExpiredGroupINT3037() throws Exception {
    /*
     * based on the aggregator scenario as follows;
     *
     * send three messages in
     * 1 of 2
     * 2 of 2
     * 2 of 2 (last again)
     *
     * expected behavior is that the LAST message (2 of 2 repeat) should be on the discard channel
     * (discard behavior performed by the AbstractCorrelatingMessageHandler.handleMessageInternal)
     */
    final JdbcMessageStore messageStore = new JdbcMessageStore(dataSource);
    //init
    String groupId = "group";
    //build the messages
    Message<?> oneOfTwo = MessageBuilder.withPayload("hello").setSequenceNumber(1).setSequenceSize(2)
            .setCorrelationId(groupId).build();
    Message<?> twoOfTwo = MessageBuilder.withPayload("world").setSequenceNumber(2).setSequenceSize(2)
            .setCorrelationId(groupId).build();
    //add to the messageStore
    messageStore.addMessageToGroup(groupId, oneOfTwo);
    messageStore.addMessageToGroup(groupId, twoOfTwo);
    //check that 2 messages are there
    assertTrue(messageStore.getMessageGroupCount() == 1);
    assertTrue(messageStore.getMessageCount() == 2);
    //retrieve the group (like in the aggregator)
    MessageGroup messageGroup = messageStore.getMessageGroup(groupId);
    //'complete' the group
    messageStore.completeGroup(messageGroup.getGroupId());
    //now clear the messages
    for (Message<?> message : messageGroup.getMessages()) {
        messageStore.removeMessageFromGroup(groupId, message);
    } //end for
      //'add' the other message --> emulated by getting the messageGroup
    messageGroup = messageStore.getMessageGroup(groupId);
    //should be marked 'complete' --> old behavior it would not
    assertTrue(messageGroup.isComplete());
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreMultipleChannelTests.java

@Test
public void testSendAndActivateTransactionalSend() throws Exception {

    new TransactionTemplate(this.transactionManager).execute(new TransactionCallback<Void>() {
        public Void doInTransaction(TransactionStatus status) {
            requestChannel.send(MessageBuilder.withPayload("Hello ").build());
            return null;
        }//from ww w. j  a  v  a 2  s .  c om
    });

    assertTrue("countDownLatch1 was " + countDownLatch1.getCount(),
            countDownLatch1.await(10000, TimeUnit.MILLISECONDS));
    assertTrue("countDownLatch2 was " + countDownLatch2.getCount(),
            countDownLatch2.await(10000, TimeUnit.MILLISECONDS));

    assertTrue("Wrong Sequence Number handled.", success.get());
    assertNull(errorChannel.receive(0));
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*from  ww w. j a  va  2 s  .  c o  m*/
public void testSerializer() throws Exception {
    // N.B. these serializers are not realistic (just for test purposes)
    messageStore.setSerializer(new Serializer<Message<?>>() {
        public void serialize(Message<?> object, OutputStream outputStream) throws IOException {
            outputStream.write(((Message<?>) object).getPayload().toString().getBytes());
            outputStream.flush();
        }
    });
    messageStore.setDeserializer(new Deserializer<GenericMessage<String>>() {
        public GenericMessage<String> deserialize(InputStream inputStream) throws IOException {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            return new GenericMessage<String>(reader.readLine());
        }
    });
    Message<String> message = MessageBuilder.withPayload("foo").build();
    Message<String> saved = messageStore.addMessage(message);
    assertNotNull(messageStore.getMessage(message.getHeaders().getId()));
    Message<?> result = messageStore.getMessage(saved.getHeaders().getId());
    assertNotNull(result);
    assertEquals("foo", result.getPayload());
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional// w  w  w . j  av a2s .com
public void testExpireMessageGroupOnCreateOnly() throws Exception {
    String groupId = "X";
    Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build();
    messageStore.addMessageToGroup(groupId, message);
    messageStore.registerMessageGroupExpiryCallback(new MessageGroupCallback() {
        public void execute(MessageGroupStore messageGroupStore, MessageGroup group) {
            messageGroupStore.removeMessageGroup(group.getGroupId());
        }
    });
    Thread.sleep(1000);
    messageStore.expireMessageGroups(2000);
    MessageGroup group = messageStore.getMessageGroup(groupId);
    assertEquals(1, group.size());
    messageStore.addMessageToGroup(groupId,
            MessageBuilder.withPayload("bar").setCorrelationId(groupId).build());
    Thread.sleep(2001);
    messageStore.expireMessageGroups(2000);
    group = messageStore.getMessageGroup(groupId);
    assertEquals(0, group.size());
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*from  w ww . j  a  v  a 2s .c  o  m*/
public void testExpireMessageGroupOnIdleOnly() throws Exception {
    String groupId = "X";
    Message<String> message = MessageBuilder.withPayload("foo").setCorrelationId(groupId).build();
    messageStore.setTimeoutOnIdle(true);
    messageStore.addMessageToGroup(groupId, message);
    messageStore.registerMessageGroupExpiryCallback(new MessageGroupCallback() {
        public void execute(MessageGroupStore messageGroupStore, MessageGroup group) {
            messageGroupStore.removeMessageGroup(group.getGroupId());
        }
    });
    Thread.sleep(1000);
    messageStore.expireMessageGroups(2000);
    MessageGroup group = messageStore.getMessageGroup(groupId);
    assertEquals(1, group.size());
    Thread.sleep(2000);
    messageStore.addMessageToGroup(groupId,
            MessageBuilder.withPayload("bar").setCorrelationId(groupId).build());
    group = messageStore.getMessageGroup(groupId);
    assertEquals(2, group.size());
    Thread.sleep(2000);
    messageStore.expireMessageGroups(2000);
    group = messageStore.getMessageGroup(groupId);
    assertEquals(0, group.size());
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*from  w  w w .  j  a  v a 2 s . c om*/
public void testMessagePollingFromTheGroup() throws Exception {

    final String groupX = "X";

    messageStore.addMessageToGroup(groupX, MessageBuilder.withPayload("foo").setCorrelationId(groupX).build());
    Thread.sleep(100);
    messageStore.addMessageToGroup(groupX, MessageBuilder.withPayload("bar").setCorrelationId(groupX).build());
    Thread.sleep(100);
    messageStore.addMessageToGroup(groupX, MessageBuilder.withPayload("baz").setCorrelationId(groupX).build());
    Thread.sleep(100);
    messageStore.addMessageToGroup("Y", MessageBuilder.withPayload("barA").setCorrelationId(groupX).build());
    Thread.sleep(100);
    messageStore.addMessageToGroup("Y", MessageBuilder.withPayload("bazA").setCorrelationId(groupX).build());
    Thread.sleep(100);
    MessageGroup group = messageStore.getMessageGroup(groupX);
    assertEquals(3, group.size());

    Message<?> message1 = messageStore.pollMessageFromGroup(groupX);
    assertNotNull(message1);
    assertEquals("foo", message1.getPayload());

    group = messageStore.getMessageGroup(groupX);
    assertEquals(2, group.size());

    Message<?> message2 = messageStore.pollMessageFromGroup(groupX);
    assertNotNull(message2);
    assertEquals("bar", message2.getPayload());

    group = messageStore.getMessageGroup(groupX);
    assertEquals(1, group.size());
}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*w  w w.j a  va  2s  . c o  m*/
@Rollback(false)
@Repeat(20)
public void testSameMessageToMultipleGroups() throws Exception {

    final String group1Id = "group1";
    final String group2Id = "group2";

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore.addMessageToGroup(group1Id, message1);
    messageStore.addMessageToGroup(group2Id, message2);

    final Message<?> messageFromGroup1 = messageStore.pollMessageFromGroup(group1Id);
    final Message<?> messageFromGroup2 = messageStore.pollMessageFromGroup(group2Id);

    assertNotNull(messageFromGroup1);
    assertNotNull(messageFromGroup2);

    LOG.info("messageFromGroup1: " + messageFromGroup1.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup1.getHeaders().getSequenceNumber());
    LOG.info("messageFromGroup2: " + messageFromGroup2.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromGroup1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromGroup2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional//from w ww.  j a  v  a 2 s  . c  o m
@Rollback(false)
@Repeat(20)
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.store.channel.AbstractTxTimeoutMessageStoreTests.java

public void test() throws InterruptedException {

    int maxMessages = 10;
    int maxWaitTime = 30000;

    final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);

    transactionTemplate.setIsolationLevel(Isolation.READ_COMMITTED.value());
    transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

    for (int i = 1; i <= maxMessages; ++i) {
        final String message = "TEST MESSAGE " + i;
        log.info("Sending message: " + message);

        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override//from w w w  . jav a2  s . c  o  m
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                inputChannel.send(MessageBuilder.withPayload(message).build());
            }
        });

        log.info(String.format("Done sending message %s of %s: %s", i, maxMessages, message));
    }

    log.info("Done sending " + maxMessages + " messages.");

    Assert.assertTrue(String.format("Contdown latch did not count down from " + "%s to 0 in %sms.", maxMessages,
            maxWaitTime), testService.await(maxWaitTime));

    Thread.sleep(2000);

    Assert.assertEquals(Integer.valueOf(0), Integer.valueOf(jdbcChannelMessageStore.getSizeOfIdCache()));
    Assert.assertEquals(Integer.valueOf(maxMessages), Integer.valueOf(testService.getSeenMessages().size()));
    Assert.assertEquals(Integer.valueOf(0), Integer.valueOf(testService.getDuplicateMessagesCount()));
}