@Override public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("myCustomEndpointId"); endpoint.setQueueNames("myQueue"); endpoint.setMessageListener(this.messageListener); registrar.registerEndpoint(endpoint); }
@Override protected MessageListener createMessageListener(MessageListenerContainer container) { return getMessageListener(); }
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); }
private SimpleRabbitListenerEndpoint createEndpoint(String id, String queueName) { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId(id); endpoint.setQueueNames(queueName); return endpoint; }
@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 queueAndQueueNamesSet() { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(messageListener); endpoint.setQueueNames("foo", "bar"); endpoint.setQueues(mock(Queue.class)); thrown.expect(IllegalStateException.class); endpoint.setupListenerContainer(container); }
@Test public void registerEmptyEndpointId() { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId(""); thrown.expect(IllegalArgumentException.class); registrar.registerEndpoint(endpoint, containerFactory); }
@Test public void createListener() { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(messageListener); assertSame(messageListener, endpoint.createMessageListener(container)); }
@Test public void registerNullContainerFactoryWithNoDefault() throws Exception { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("some id"); registrar.registerEndpoint(endpoint, null); thrown.expect(IllegalStateException.class); thrown.expectMessage(endpoint.toString()); registrar.afterPropertiesSet(); }
@Test public void registerNullEndpointId() { thrown.expect(IllegalArgumentException.class); registrar.registerEndpoint(new SimpleRabbitListenerEndpoint(), containerFactory); }
@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]); }
@Test public void registerNullContainerFactoryIsAllowed() throws Exception { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("some id"); registrar.setContainerFactory(containerFactory); registrar.registerEndpoint(endpoint, null); registrar.afterPropertiesSet(); assertNotNull("Container not created", registry.getListenerContainer("some id")); assertEquals("some id", registry.getListenerContainerIds().iterator().next()); assertEquals(1, registry.getListenerContainers().size()); }
@Test public void createWithNullEndpointId() { thrown.expect(IllegalArgumentException.class); registry.registerListenerContainer(new SimpleRabbitListenerEndpoint(), containerFactory); }
@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); }
SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setMessageListener(this.messageListener); endpoint.setQueueNames("myQueue"); DirectMessageListenerContainer container = this.direct.createListenerContainer(endpoint);
@Test public void registerContainerWithoutFactory() throws Exception { SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint(); endpoint.setId("myEndpoint"); registrar.setContainerFactory(containerFactory); registrar.registerEndpoint(endpoint); registrar.afterPropertiesSet(); assertNotNull("Container not created", registry.getListenerContainer("myEndpoint")); assertEquals("myEndpoint", registry.getListenerContainerIds().iterator().next()); assertEquals(1, registry.getListenerContainers().size()); }
@Override protected MessageListener createMessageListener(MessageListenerContainer container) { return getMessageListener(); }
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)); }
/** * Test for {@link CustomBean} and an manually endpoint registered * with "myCustomEndpointId". The custom endpoint does not provide * any factory so it's registered with the default one */ public void testCustomConfiguration(ApplicationContext context) { RabbitListenerContainerTestFactory defaultFactory = context.getBean("rabbitListenerContainerFactory", RabbitListenerContainerTestFactory.class); RabbitListenerContainerTestFactory customFactory = context.getBean("customFactory", RabbitListenerContainerTestFactory.class); assertEquals(1, defaultFactory.getListenerContainers().size()); assertEquals(1, customFactory.getListenerContainers().size()); RabbitListenerEndpoint endpoint = defaultFactory.getListenerContainers().get(0).getEndpoint(); assertEquals("Wrong endpoint type", SimpleRabbitListenerEndpoint.class, endpoint.getClass()); assertEquals("Wrong listener set in custom endpoint", context.getBean("simpleMessageListener"), ((SimpleRabbitListenerEndpoint) endpoint).getMessageListener()); RabbitListenerEndpointRegistry customRegistry = context.getBean("customRegistry", RabbitListenerEndpointRegistry.class); assertEquals("Wrong number of containers in the registry", 2, customRegistry.getListenerContainerIds().size()); assertEquals("Wrong number of containers in the registry", 2, customRegistry.getListenerContainers().size()); assertNotNull("Container with custom id on the annotation should be found", customRegistry.getListenerContainer("listenerId")); assertNotNull("Container created with custom id should be found", customRegistry.getListenerContainer("myCustomEndpointId")); }