Почему RabbitMq работает только в одном потоке после поднятия
Вот конфигурация кролика
@Configuration
public class RabbitConfig {
@Bean
public CachingConnectionFactory connectionFactory() {
return new CachingConnectionFactory("localhost");
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrentConsumers(4);
factory.setMaxConcurrentConsumers(4);
return factory;
}
@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}
}
Вот слушатель
@Component
public class Listener {
@RabbitListener(queues = "FirstQueue")
public void processFirstQueue(String message) {
System.out.println("FIRST-QUEUE " + message);
}
@RabbitListener(queues = "SecondQueue", concurrency = "4-4")
public void processSecondQueue(String message, Channel channel) {
System.out.println("SECOND-QUEUE " + message + " " + Thread.currentThread().getName());
}
}
Детали по очереди
А вот логи
2021-06-22 12:55:45.811 INFO 1620 --- [ main] com.rabbit.demo.RabbitDemoApplication : No active profile set, falling back to default profiles: default
2021-06-22 12:55:46.594 INFO 1620 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-06-22 12:55:46.616 INFO 1620 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-06-22 12:55:46.617 INFO 1620 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
2021-06-22 12:55:46.753 INFO 1620 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-06-22 12:55:46.753 INFO 1620 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 882 ms
2021-06-22 12:55:46.951 INFO 1620 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-22 12:55:47.166 INFO 1620 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-06-22 12:55:47.168 INFO 1620 --- [ main] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: localhost:5672
2021-06-22 12:55:47.196 INFO 1620 --- [ main] o.s.a.r.c.CachingConnectionFactory : Created new connection: connectionFactory#4b6d92e:0/SimpleConnection@11d045b4 [delegate=amqp://[email protected]:5672/, localPort= 57952]
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
2021-06-22 12:55:47.239 INFO 1620 --- [ main] com.rabbit.demo.RabbitDemoApplication : Started RabbitDemoApplication in 1.676 seconds (JVM running for 2.381)
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
THERE IS RUNTIME SENDING STARTS
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-4
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-4
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-4
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-4
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-4
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-3
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-1
SECOND-QUEUE Hi org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2
Сообщения которые были до отметки "THERE IS RUNTIME SENDING STARTS" это сообщения, которыми я наполнил очередь пока приложение было остановлено. А все что после, это сообщение которыми я начал наполнять очередь, после поднятие приложения. Вопрос, почему после поднятия используется только один поток для обработки всех сообщений пока приложение лежало решение и что можно с этим сделать?
