我正在用Java做一个简单的项目。我想知道如果我写这个代码,SimpleRabbitListenerContainerFactory.setConcurrentConsumers(2),那么我的程序使用多线程吗?
SimpleRabbitListenerContainerFactory.setConcurrentConsumers(2)
xdyibdwo1#
简单的回答是肯定的。假设你在配置监听器的@Bean注解方法中配置它。根据Spring AMPQ文档,它看起来应该类似于:
@Bean
@Configuration @EnableRabbit public class AppConfig { @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory()); factory.setConcurrentConsumers(3); factory.setMaxConcurrentConsumers(10); return factory; } }
正如您所看到的,还设置了并发消费者的最大数量,这意味着您将使用min=3和max=10消费者之间的某个消费者。如果你只设置.setConcurrentConsumers(3),这意味着你使用的是固定数。不能多,不能少。建议阅读:监听程序并发注解驱动的异步配置
min=3
max=10
.setConcurrentConsumers(3)
1条答案
按热度按时间xdyibdwo1#
简单的回答是肯定的。
假设你在配置监听器的
@Bean
注解方法中配置它。根据Spring AMPQ文档,它看起来应该类似于:正如您所看到的,还设置了并发消费者的最大数量,这意味着您将使用
min=3
和max=10
消费者之间的某个消费者。如果你只设置
.setConcurrentConsumers(3)
,这意味着你使用的是固定数。不能多,不能少。建议阅读:
监听程序并发
注解驱动的异步配置