@Test public void testImmediateSend() { QueueChannel channel = new QueueChannel(3); boolean result1 = channel.send(new GenericMessage<>("test-1")); assertTrue(result1); boolean result2 = channel.send(new GenericMessage<>("test-2"), 100); assertTrue(result2); boolean result3 = channel.send(new GenericMessage<>("test-3"), 0); assertTrue(result3); boolean result4 = channel.send(new GenericMessage<>("test-4"), 0); assertFalse(result4); }
@Test public void testPurgeAllWithoutSelector() { QueueChannel channel = new QueueChannel(); channel.send(new GenericMessage<String>("test1")); channel.send(new GenericMessage<String>("test2")); channel.send(new GenericMessage<String>("test3")); ChannelPurger purger = new ChannelPurger(channel); List<Message<?>> purgedMessages = purger.purge(); assertEquals(3, purgedMessages.size()); assertNull(channel.receive(0)); }
@Test public void testRollback() throws Exception { this.queueChannel.send(new GenericMessage<>("fail")); Message<?> message = this.good.receive(10000); assertNotNull(message); assertEquals("retry:fail", message.getPayload()); }
@Test public void maxMessagesPerTaskSameAsMessageCount() { endpoint.setTrigger(trigger); endpoint.setMaxMessagesPerPoll(2); channel.send(new GenericMessage<String>("foo"), 0); channel.send(new GenericMessage<String>("bar"), 0); endpoint.start(); trigger.await(); endpoint.stop(); assertEquals("foobar", writer.toString()); }
@Test(expected = MessageDeliveryException.class) public void testSingleSelectorRejects() { final AtomicInteger counter = new AtomicInteger(); MessageSelector selector = new TestMessageSelector(false, counter); MessageSelectingInterceptor interceptor = new MessageSelectingInterceptor(selector); QueueChannel channel = new QueueChannel(); channel.addInterceptor(interceptor); channel.send(new GenericMessage<>("test1")); }
@Test(expected = TimeoutException.class) public void asyncConvertAndSendWithTimeoutException() throws Exception { QueueChannel channel = new QueueChannel(1); channel.send(MessageBuilder.withPayload("blocker").build()); AsyncMessagingTemplate template = new AsyncMessagingTemplate(); Future<?> result = template.asyncConvertAndSend(channel, "test"); result.get(100, TimeUnit.MILLISECONDS); }
@Test public void testCommit() throws Exception { GenericMessage<String> sentMessage = new GenericMessage<>("hello"); this.queueChannel.send(sentMessage); Message<?> message = this.good.receive(10000); assertNotNull(message); assertEquals("hello", message.getPayload()); assertSame(message, sentMessage); }
@Test public void testSingleSelectorAccepts() { final AtomicInteger counter = new AtomicInteger(); MessageSelector selector = new TestMessageSelector(true, counter); MessageSelectingInterceptor interceptor = new MessageSelectingInterceptor(selector); QueueChannel channel = new QueueChannel(); channel.addInterceptor(interceptor); assertTrue(channel.send(new GenericMessage<>("test1"))); }
@Test public void testPreSendInterceptorReturnsMessage() { PreSendReturnsMessageInterceptor interceptor = new PreSendReturnsMessageInterceptor(); channel.addInterceptor(interceptor); channel.send(new GenericMessage<String>("test")); Message<?> result = channel.receive(0); assertNotNull(result); assertEquals("test", result.getPayload()); assertEquals(1, result.getHeaders().get(PreSendReturnsMessageInterceptor.class.getSimpleName())); assertTrue(interceptor.wasAfterCompletionInvoked()); }
@Test public void testPreReceiveInterceptorReturnsFalse() { channel.addInterceptor(new PreReceiveReturnsFalseInterceptor()); Message<?> message = new GenericMessage<String>("test"); channel.send(message); Message<?> result = channel.receive(0); assertEquals(1, PreReceiveReturnsFalseInterceptor.counter.get()); assertNull(result); }
@Test public void testIncludeChannelName() throws Exception { Message<String> sentMessage = MessageBuilder.withPayload("hello") .setHeader("foo", "bar").build(); queueChannel2.send(sentMessage); Message<?> message = good.receive(10000); assertNotNull(message); assertEquals("hello processed ok from queueChannel2", message.getPayload()); assertNotNull(message.getHeaders().get("foo")); assertEquals("bar", message.getHeaders().get("foo")); }
@Test public void testMultipleSelectorsAccept() { final AtomicInteger counter = new AtomicInteger(); MessageSelector selector1 = new TestMessageSelector(true, counter); MessageSelector selector2 = new TestMessageSelector(true, counter); MessageSelectingInterceptor interceptor = new MessageSelectingInterceptor(selector1, selector2); QueueChannel channel = new QueueChannel(); channel.addInterceptor(interceptor); assertTrue(channel.send(new GenericMessage<>("test1"))); assertEquals(2, counter.get()); }
@Test(expected = TimeoutException.class) public void asyncSendWithTimeoutException() throws Exception { QueueChannel channel = new QueueChannel(1); channel.send(MessageBuilder.withPayload("blocker").build()); AsyncMessagingTemplate template = new AsyncMessagingTemplate(); Future<?> result = template.asyncSend(channel, MessageBuilder.withPayload("test").build()); result.get(100, TimeUnit.MILLISECONDS); }
@Test public void testProxyQueue() { assertTrue(AopUtils.isCglibProxy(this.queueChannel)); this.queueChannel.send(new GenericMessage<>("foo")); assertNotNull(this.queueChannel.receive(0)); }
@Test public void singleNonStringObject() { endpoint.setTrigger(trigger); endpoint.setMaxMessagesPerPoll(1); TestObject testObject = new TestObject("foo"); channel.send(new GenericMessage<TestObject>(testObject)); endpoint.start(); trigger.await(); endpoint.stop(); assertEquals("foo", writer.toString()); }
@Test public void testPreReceiveInterceptorReturnsTrue() { PreReceiveReturnsTrueInterceptor interceptor = new PreReceiveReturnsTrueInterceptor(); channel.addInterceptor(interceptor); Message<?> message = new GenericMessage<String>("test"); channel.send(message); Message<?> result = channel.receive(0); assertEquals(1, interceptor.getCounter().get()); assertNotNull(result); assertTrue(interceptor.wasAfterCompletionInvoked()); }
@Test public void unsupportedTypeButConversionServiceSupports() { QueueChannel channel = createChannel(Integer.class); ConversionService conversionService = new DefaultConversionService(); DefaultDatatypeChannelMessageConverter converter = new DefaultDatatypeChannelMessageConverter(); converter.setConversionService(conversionService); channel.setMessageConverter(converter); assertTrue(channel.send(new GenericMessage<String>("123"))); }
@Test(expected = MessageDeliveryException.class) public void unsupportedTypeAndConversionServiceDoesNotSupport() { QueueChannel channel = createChannel(Integer.class); ConversionService conversionService = new DefaultConversionService(); DefaultDatatypeChannelMessageConverter converter = new DefaultDatatypeChannelMessageConverter(); converter.setConversionService(conversionService); channel.setMessageConverter(converter); assertTrue(channel.send(new GenericMessage<Boolean>(Boolean.TRUE))); }
@Test public void wireTapWithNoSelector() { QueueChannel mainChannel = new QueueChannel(); QueueChannel secondaryChannel = new QueueChannel(); mainChannel.addInterceptor(new WireTap(secondaryChannel)); mainChannel.send(new GenericMessage<>("testing")); Message<?> original = mainChannel.receive(0); assertNotNull(original); Message<?> intercepted = secondaryChannel.receive(0); assertNotNull(intercepted); assertEquals(original, intercepted); }
@Test public void wireTapWithAcceptingSelector() { QueueChannel mainChannel = new QueueChannel(); QueueChannel secondaryChannel = new QueueChannel(); mainChannel.addInterceptor(new WireTap(secondaryChannel, new TestSelector(true))); mainChannel.send(new GenericMessage<>("testing")); Message<?> original = mainChannel.receive(0); assertNotNull(original); Message<?> intercepted = secondaryChannel.receive(0); assertNotNull(intercepted); assertEquals(original, intercepted); }