rabbitlistener在spring引导应用程序中反复使用同一线程

ax6ht2ek  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(261)

我想测试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个),它应该使用它们,而不是使用同一个线程。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题