@Test public void hasExpirationDate_() throws Exception { Matcher<Long> anyMatcher = any(Long.class); assertThat(message, not(hasExpirationDate(anyMatcher))); Date expirationDate = new Date(System.currentTimeMillis() + 10000); message = MessageBuilder.fromMessage(message).setExpirationDate(expirationDate).build(); assertThat(message, hasExpirationDate(expirationDate)); assertThat(message, hasExpirationDate(not(is((System.currentTimeMillis()))))); }
@Test public void testExpirationDateSetAsDate() { Long past = System.currentTimeMillis() - (60 * 1000); Message<Integer> expiredMessage = MessageBuilder.withPayload(1) .setExpirationDate(new Date(past)).build(); assertEquals(past, new IntegrationMessageHeaderAccessor(expiredMessage).getExpirationDate()); }
@Test public void testExpirationDateSetAsLong() { Long past = System.currentTimeMillis() - (60 * 1000); Message<Integer> expiredMessage = MessageBuilder.withPayload(1) .setExpirationDate(past).build(); assertEquals(past, new IntegrationMessageHeaderAccessor(expiredMessage).getExpirationDate()); }
@Test public void testUnexpiredMessageAccepted() { long future = System.currentTimeMillis() + 60000; Message<String> message = MessageBuilder.withPayload("unexpired") .setExpirationDate(future).build(); UnexpiredMessageSelector selector = new UnexpiredMessageSelector(); assertTrue(selector.accept(message)); }
@Test public void testExpiredMessageRejected() { long past = System.currentTimeMillis() - 60000; Message<String> message = MessageBuilder.withPayload("expired") .setExpirationDate(past).build(); UnexpiredMessageSelector selector = new UnexpiredMessageSelector(); assertFalse(selector.accept(message)); }
@Test public void testPurge() { QueueChannel channel = new QueueChannel(2); long minute = 60 * 1000; long time = System.currentTimeMillis(); long past = time - minute; long future = time + minute; Message<String> expiredMessage = MessageBuilder.withPayload("test1") .setExpirationDate(past).build(); Message<String> unexpiredMessage = MessageBuilder.withPayload("test2") .setExpirationDate(future).build(); assertTrue(channel.send(expiredMessage, 0)); assertTrue(channel.send(unexpiredMessage, 0)); assertFalse(channel.send(new GenericMessage<>("atCapacity"), 0)); List<Message<?>> purgedMessages = channel.purge(new UnexpiredMessageSelector()); assertNotNull(purgedMessages); assertEquals(1, purgedMessages.size()); assertTrue(channel.send(new GenericMessage<>("roomAvailable"), 0)); }
message = MessageBuilder.withPayload(flexMessage.getBody()) .copyHeaders(headers) .setExpirationDate(timestamp + flexMessage.getTimeToLive()) .build();