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 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); }
@Test public void createListener() { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(messageListener); assertSame(messageListener, endpoint.createMessageListener(container)); }
@Override public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("myCustomEndpointId"); endpoint.setQueueNames("myQueue"); endpoint.setMessageListener(this.messageListener); registrar.registerEndpoint(endpoint); }
@Test public void queueAndQueueNamesSet() { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(messageListener); endpoint.setQueueNames("foo", "bar"); endpoint.setQueues(mock(Queue.class)); thrown.expect(IllegalStateException.class); endpoint.setupListenerContainer(container); }
@Override public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) { registrar.setEndpointRegistry(customRegistry()); // Also register a custom endpoint SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("myCustomEndpointId"); endpoint.setQueueNames("myQueue"); endpoint.setMessageListener(simpleMessageListener()); registrar.registerEndpoint(endpoint); }
@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]); }
private void registerListenerEndpoint(RabbitListenerEndpointRegistrar aRegistrar, Queue aQueue, Exchange aExchange, int aConcurrency, Object aDelegate, String aMethodName) { admin(connectionFactory).declareQueue(aQueue); admin(connectionFactory).declareBinding(BindingBuilder.bind(aQueue) .to(aExchange) .with(aQueue.getName()) .noargs()); MessageListenerAdapter messageListener = new MessageListenerAdapter(aDelegate); messageListener.setMessageConverter(jacksonAmqpMessageConverter(objectMapper)); messageListener.setDefaultListenerMethod(aMethodName); SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId(aQueue.getName()+"Endpoint"); endpoint.setQueueNames(aQueue.getName()); endpoint.setMessageListener(messageListener); aRegistrar.registerEndpoint(endpoint,createContainerFactory(aConcurrency)); }
endpoint.setMessageListener(this.messageListener); endpoint.setQueueNames("myQueue"); DirectMessageListenerContainer container = this.direct.createListenerContainer(endpoint);