/** * Test for {@link ValidationBean} with a validator ({@link TestValidator}) specified * in a custom {@link org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory}. * * The test should throw a {@link org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException} */ public void testRabbitHandlerMethodFactoryConfiguration(ApplicationContext context) throws Exception { RabbitListenerContainerTestFactory simpleFactory = context.getBean("defaultFactory", RabbitListenerContainerTestFactory.class); assertEquals(1, simpleFactory.getListenerContainers().size()); MethodRabbitListenerEndpoint endpoint = (MethodRabbitListenerEndpoint) simpleFactory.getListenerContainers().get(0).getEndpoint(); SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); endpoint.setupListenerContainer(container); MessagingMessageListenerAdapter listener = (MessagingMessageListenerAdapter) container.getMessageListener(); MessageProperties properties = new MessageProperties(); properties.setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN); Message amqpMessage = new Message("failValidation".getBytes(), properties); listener.onMessage(amqpMessage, mock(Channel.class)); }
@Test public void simpleMessageListenerWithMixedAnnotations() { ConfigurableApplicationContext context = new AnnotationConfigApplicationContext( Config.class, SimpleMessageListenerWithMixedAnnotationsTestBean.class); RabbitListenerContainerTestFactory factory = context.getBean(RabbitListenerContainerTestFactory.class); assertEquals("One container should have been registered", 1, factory.getListenerContainers().size()); MessageListenerTestContainer container = factory.getListenerContainers().get(0); RabbitListenerEndpoint endpoint = container.getEndpoint(); assertEquals("Wrong endpoint type", MethodRabbitListenerEndpoint.class, endpoint.getClass()); MethodRabbitListenerEndpoint methodEndpoint = (MethodRabbitListenerEndpoint) endpoint; assertNotNull(methodEndpoint.getBean()); assertNotNull(methodEndpoint.getMethod()); Iterator<String> iterator = ((MethodRabbitListenerEndpoint) endpoint).getQueueNames().iterator(); assertEquals("testQueue", iterator.next()); assertEquals("secondQueue", iterator.next()); SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer(); methodEndpoint.setupListenerContainer(listenerContainer); assertNotNull(listenerContainer.getMessageListener()); assertTrue("Should have been started " + container, container.isStarted()); context.close(); // Close and stop the listeners assertTrue("Should have been stopped " + container, container.isStopped()); }
@Test public void simpleMessageListener() { ConfigurableApplicationContext context = new AnnotationConfigApplicationContext( Config.class, SimpleMessageListenerTestBean.class); RabbitListenerContainerTestFactory factory = context.getBean(RabbitListenerContainerTestFactory.class); assertEquals("One container should have been registered", 1, factory.getListenerContainers().size()); MessageListenerTestContainer container = factory.getListenerContainers().get(0); RabbitListenerEndpoint endpoint = container.getEndpoint(); assertEquals("Wrong endpoint type", MethodRabbitListenerEndpoint.class, endpoint.getClass()); MethodRabbitListenerEndpoint methodEndpoint = (MethodRabbitListenerEndpoint) endpoint; assertNotNull(methodEndpoint.getBean()); assertNotNull(methodEndpoint.getMethod()); SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer(); methodEndpoint.setupListenerContainer(listenerContainer); assertNotNull(listenerContainer.getMessageListener()); assertTrue("Should have been started " + container, container.isStarted()); context.close(); // Close and stop the listeners assertTrue("Should have been stopped " + container, container.isStopped()); }
endpoint.setupListenerContainer(container); MessagingMessageListenerAdapter listener = (MessagingMessageListenerAdapter) container.getMessageListener();