@Test public void testTimeoutDefaultExpiry() throws InterruptedException { this.resequencer.setGroupTimeoutExpression(new SpelExpressionParser().parseExpression("100")); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); this.resequencer.setTaskScheduler(taskScheduler); QueueChannel discardChannel = new QueueChannel(); this.resequencer.setDiscardChannel(discardChannel); QueueChannel replyChannel = new QueueChannel(); this.resequencer.setOutputChannel(replyChannel); Message<?> message3 = createMessage("789", "ABC", 3, 3, null); Message<?> message2 = createMessage("456", "ABC", 3, 2, null); this.resequencer.handleMessage(message3); this.resequencer.handleMessage(message2); Message<?> out1 = replyChannel.receive(10); assertNull(out1); out1 = discardChannel.receive(10000); assertNotNull(out1); Message<?> out2 = discardChannel.receive(10); assertNotNull(out2); Message<?> message1 = createMessage("123", "ABC", 3, 1, null); this.resequencer.handleMessage(message1); Message<?> out3 = discardChannel.receive(0); assertNotNull(out3); }