我正在为我的消息传递应用程序设置DirectMessageListenerContainer。我正在使用Tomcat,Spring,AMQP。
文档有此警告https://docs.spring.io/spring-amqp/reference/#threading
对于DirectMessageListenerContainer,您需要确保 连接工厂配置有一个任务执行程序,该任务执行程序具有 足够的线程来支持所有所需的并发 使用该工厂的侦听器容器。默认池大小为 只有五个。
在我的应用程序中,我没有配置任何执行程序,所以我使用默认值。我没有这样做的原因是因为我正在通过设置有10000个最大线程的tomcat进行操作。我最终会遇到5个游泳池的瓶颈吗?
答案 0 :(得分:1)
侦听器线程与tomcat线程无关。我只是查看了最新的amqp客户端(Spring AMQP使用的RabbitMQ Java客户端),现在默认的线程数是...
DEFAULT_NUM_THREADS = Runtime.getRuntime().availableProcessors() * 2;
这是否足以满足您的应用程序的需要,完全取决于您的应用程序,处理消息所花费的时间以及所配置的并发性(consumersPerQueue
)。