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

标签 java tomcat rabbitmq amqp spring-rabbit

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

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

With the DirectMessageListenerContainer, you need to ensure that the connection factory is configured with a task executor that had sufficient threads to support your desired concurrency across all listener containers that use that factory. The default pool size is only five.

在我的应用程序中,我没有配置任何执行器,所以我使用默认值。我没有这样做的原因是因为我在 tomcat 上运行,它设置了 10000 个最大线程。我最终会遇到池大小为 5 的瓶颈吗?

最佳答案

监听线程与tomcat线程无关。我刚刚查看了最新的 amqp-client(Spring AMQP 使用的 RabbitMQ java 客户端),现在默认的线程数是......

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

这是否足以满足您的应用程序完全取决于您的应用程序、处理一条消息需要多长时间以及您配置的并发度(consumersPerQueue)。

关于java - 在 TomCat 上没有配置任务执行器的 DirectMessageListenerContainer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835537/

相关文章:

java - 我应该如何与Spring后端通信-GWT前端+移动设备

Java : Nesting an if/else statement inside a while loop

java - 在生产或测试中运行时,Grails 不使用我的数据源?

java - 为什么rabbitmq队列绑定(bind)会自动更改?

node.js - 如何配置、运行、监控和管理多个不同的 Node 服务?

java - Guava JavaDocs 中基于不同 "equivalence relations"的集合是什么意思?

java - 解析并捕获字符串末尾的数字

spring-mvc - 如何在spring-boot中拦截嵌入式Tomcat上的 "global"404s

regex - XPath 和正则表达式都不能在 JMeter 3.0 上运行

image - Docker - 具有多个图像的容器