private void initRabbitMQ() throws URISyntaxException { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(new URI(host)); Map<String, Object> cmdQueueArgs = new HashMap<>(); cmdQueueArgs.put("x-max-length", maxSize); cmdQueueArgs.put("x-max-priority", maxPriority); Queue cmdQueue = new Queue(name, true, false, false, cmdQueueArgs); RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); rabbitAdmin.declareQueue(cmdQueue); // setup listener container factory SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setConcurrentConsumers(DEFAULT_CONCURRENCY); factory.setMaxConcurrentConsumers(DEFAULT_CONCURRENCY); factory.setTaskExecutor(executor); factory.setAutoStartup(false); // setup rabbit template template = new RabbitTemplate(connectionFactory); template.setQueue(name); // setup container SimpleRabbitListenerEndpoint simpleEndpoint = new SimpleRabbitListenerEndpoint(); simpleEndpoint.setMessageListener(new RabbitMessageListener()); container = factory.createListenerContainer(simpleEndpoint); container.setQueueNames(name); log.trace("RabbitMQ initialized on '{}' with queue name '{}'", host, name); }
@Bean public SimpleMessageListenerContainer factoryCreatedContainerNoListener( SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) { SimpleMessageListenerContainer container = rabbitListenerContainerFactory.createListenerContainer(); container.setMessageListener(message -> { this.message = message; this.noListenerLatch.countDown(); }); container.setQueueNames("test.no.listener.yet"); return container; }
@Bean public SimpleMessageListenerContainer factoryCreatedContainerSimpleListener( SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) { SimpleRabbitListenerEndpoint listener = new SimpleRabbitListenerEndpoint(); listener.setQueueNames("test.manual.container"); listener.setMessageListener((ChannelAwareMessageListener) (message, channel) -> { this.message = message; this.manualContainerLatch.countDown(); }); return rabbitListenerContainerFactory.createListenerContainer(listener); }
private void invokeListener(RabbitListenerEndpoint endpoint, Message message) throws Exception { SimpleMessageListenerContainer messageListenerContainer = containerFactory.createListenerContainer(endpoint); Object listener = messageListenerContainer.getMessageListener(); if (listener instanceof ChannelAwareMessageListener) { ((ChannelAwareMessageListener) listener).onMessage(message, mock(Channel.class)); } else { ((MessageListener) listener).onMessage(message); } }
@Test public void createSimpleContainer() { setBasicConfig(this.factory); SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(this.messageListener); endpoint.setQueueNames("myQueue"); SimpleMessageListenerContainer container = this.factory.createListenerContainer(endpoint); assertBasicConfig(container); assertEquals(messageListener, container.getMessageListener()); assertEquals("myQueue", container.getQueueNames()[0]); }