/** * @param defaultDelay the defaultDelay. * @return the endpoint spec. * @see DelayHandler#setDefaultDelay(long) */ public DelayerEndpointSpec defaultDelay(long defaultDelay) { this.handler.setDefaultDelay(defaultDelay); return _this(); }
@Test public void delayHeaderIsDateInThePastAndDefaultDelayWouldTimeout() { delayHandler.setDefaultDelay(5000); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", new Date(new Date().getTime() - 60 * 1000)).build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void delayHeaderIsDateInTheFutureAndDefaultDelayWouldTimeout() { delayHandler.setDefaultDelay(5000); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", new Date(new Date().getTime() + 150)).build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertNotSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void verifyShutdownWithoutWaitingByDefault() throws Exception { delayHandler.setDefaultDelay(5000); startDelayerHandler(); delayHandler.handleMessage(new GenericMessage<>("foo")); taskScheduler.destroy(); final CountDownLatch latch = new CountDownLatch(1); new Thread(() -> { try { taskScheduler.getScheduledExecutor().awaitTermination(10000, TimeUnit.MILLISECONDS); latch.countDown(); } catch (InterruptedException e) { // won't countDown } }).start(); assertTrue(latch.await(10, TimeUnit.SECONDS)); }
@Test public void noDelayHeaderAndDefaultDelayIsPositive() { delayHandler.setDefaultDelay(10); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test").build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertNotSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void delayHeaderIsInvalidFallsBackToDefaultDelay() { delayHandler.setDefaultDelay(5); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", "not a number").build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertNotSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void delayHeaderIsValidStringAndDefaultDelayWouldTimeout() { delayHandler.setDefaultDelay(5000); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", "20").build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertNotSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void delayHeaderAndDefaultDelayWouldTimeout() { delayHandler.setDefaultDelay(5000); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", 100).build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertNotSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void delayHeaderIsNegativeAndDefaultDelayWouldTimeout() { delayHandler.setDefaultDelay(5000); this.setDelayExpression(); startDelayerHandler(); Message<?> message = MessageBuilder.withPayload("test") .setHeader("delay", -7000).build(); input.send(message); waitForLatch(10000); assertSame(message.getPayload(), resultHandler.lastMessage.getPayload()); assertSame(Thread.currentThread(), resultHandler.lastThread); }
@Test public void errorFlowAndRetries() throws Exception { delayHandler.setDefaultDelay(10); delayHandler.setRetryDelay(15); startDelayerHandler();
@Test public void verifyShutdownWithWait() throws Exception { this.delayHandler.setDefaultDelay(100); this.taskScheduler.setWaitForTasksToCompleteOnShutdown(true); startDelayerHandler(); this.delayHandler.handleMessage(new GenericMessage<>("foo")); this.taskScheduler.destroy(); assertTrue(this.taskScheduler.getScheduledExecutor().awaitTermination(10, TimeUnit.SECONDS)); assertTrue(this.latch.await(10, TimeUnit.SECONDS)); }
public void testReschedulePersistedMessagesOnStartup() throws Exception { MessageGroupStore messageGroupStore = new SimpleMessageStore(); this.delayHandler.setDefaultDelay(2000); this.delayHandler.setMessageStore(messageGroupStore); startDelayerHandler(); this.delayHandler = new DelayHandler(DELAYER_MESSAGE_GROUP_ID, this.taskScheduler); this.delayHandler.setOutputChannel(output); this.delayHandler.setDefaultDelay(200); this.delayHandler.setMessageStore(messageGroupStore); this.delayHandler.setBeanFactory(mock(BeanFactory.class));
/** * @param defaultDelay the defaultDelay. * @return the endpoint spec. * @see DelayHandler#setDefaultDelay(long) */ public DelayerEndpointSpec defaultDelay(long defaultDelay) { this.handler.setDefaultDelay(defaultDelay); return _this(); }
/** * @param defaultDelay the defaultDelay. * @return the endpoint spec. * @see DelayHandler#setDefaultDelay(long) */ public DelayerEndpointSpec defaultDelay(long defaultDelay) { this.handler.setDefaultDelay(defaultDelay); return _this(); }
/** * @param defaultDelay the defaultDelay. * @return the endpoint spec. * @see DelayHandler#setDefaultDelay(long) */ public DelayerEndpointSpec defaultDelay(long defaultDelay) { this.handler.setDefaultDelay(defaultDelay); return _this(); }
@Test //INT-3560 /* It's difficult to test it from real ctx, because any async process from 'inbound-channel-adapter' can't achieve the DelayHandler before the main thread emits 'ContextRefreshedEvent'. */ public void testRescheduleAndHandleAtTheSameTime() { QueueChannel results = new QueueChannel(); delayHandler.setOutputChannel(results); this.delayHandler.setDefaultDelay(10); startDelayerHandler(); this.input.send(new GenericMessage<>("foo")); this.delayHandler.reschedulePersistedMessages(); Message<?> message = results.receive(10000); assertNotNull(message); message = results.receive(50); assertNull(message); }