List of usage examples for org.springframework.integration.support MessageBuilder withPayload
public static <T> MessageBuilder<T> withPayload(T payload)
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())); }