DirectMessageListenerContainer在TomCat上没有配置的任务执行器?

时间:2019-02-22 21:37:25

标签: java tomcat rabbitmq amqp spring-rabbitmq

我正在为我的消息传递应用程序设置DirectMessageListenerContainer。我正在使用Tomcat,Spring,AMQP。

文档有此警告https://docs.spring.io/spring-amqp/reference/#threading

  

对于DirectMessageListenerContainer,您需要确保   连接工厂配置有一个任务执行程序,该任务执行程序具有   足够的线程来支持所有所需的并发   使用该工厂的侦听器容器。默认池大小为   只有五个。

在我的应用程序中,我没有配置任何执行程序,所以我使用默认值。我没有这样做的原因是因为我正在通过设置有10000个最大线程的tomcat进行操作。我最终会遇到5个游泳池的瓶颈吗?

1 个答案:

答案 0 :(得分:1)

侦听器线程与tomcat线程无关。我只是查看了最新的amqp客户端(Spring AMQP使用的RabbitMQ Java客户端),现在默认的线程数是...

DEFAULT_NUM_THREADS = Runtime.getRuntime().availableProcessors() * 2;

这是否足以满足您的应用程序的需要,完全取决于您的应用程序,处理消息所花费的时间以及所配置的并发性(consumersPerQueue)。