我想测试rabbitlistener在发送多个请求时的行为,类似于负载测试。下面是我所做的-我创建了一个兔子监听器:
@RabbitListener(queues = "one.two.three.queue")
public void queueConsumer1(Message message) throws JsonProcessingException, InterruptedException {
Country country = objectMapper.readValue(new String(message.getBody(), StandardCharsets.UTF_8), Country.class);
System.out.println(Thread.currentThread().getName()+" - "+country.getName());
Thread.sleep(10000); // assuming the whole process after this takes 10 seconds
}
此侦听器位于spring引导应用程序中。在springboot中,默认的线程池大小是200。在启动这个应用程序之前,我已经在rabbitmq服务器中将20条country类型的消息排队。
当我启动应用程序时,我希望它能一次打印出具有不同线程名称的国家名称。但它是用相同的线程名称打印国家名称,每个国家之间需要10秒的间隔。
org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1 - DRC
org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1 - South Africa
我无法理解这种行为,因为线程池中有这么多线程(最多200个),它应该使用它们,而不是使用同一个线程。
暂无答案!
目前还没有任何答案,快来回答吧!