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