Spring JMS入站网关容器的使用者线程数乘以配置值的3倍
JMS消息在ativeMQ中可用,由工作人员选择,工作人员配置如上所述, 我们想要控制工作人员可以处理多少条消息,观察到消费者总是乘以配置的3倍。 从上面的配置可以看出,创建了75个使用者,运行了75个任务执行(workerPollerTaskExecutor) 基本上,创建了3组同名的并发使用者(senExtractWorkerInGateway.container-1的3个线程) 在workerPollerTaskExecutor中也观察到了相同的行为。 有人能帮助我们理解为什么总是3倍于3倍Spring JMS入站网关容器的使用者线程数乘以配置值的3倍,spring,spring-integration,spring-jms,Spring,Spring Integration,Spring Jms,JMS消息在ativeMQ中可用,由工作人员选择,工作人员配置如上所述, 我们想要控制工作人员可以处理多少条消息,观察到消费者总是乘以配置的3倍。 从上面的配置可以看出,创建了75个使用者,运行了75个任务执行(workerPollerTaskExecutor) 基本上,创建了3组同名的并发使用者(senExtractWorkerInGateway.container-1的3个线程) 在workerPollerTaskExecutor中也观察到了相同的行为。 有人能帮助我们理解为什么总是3倍于3
应用程序上下文加载了3次(由于我们端的代码问题),导致此行为。希望这对其他人有帮助。
谢谢。这没有意义;请提供一个展示这种行为的最小、完整的示例。感谢您花时间在@GaryRussell上。这是来自我们多次加载应用程序上下文的问题。
<int-jms:inbound-gateway
id="senExtractWorkerInGateway"
connection-factory="jmsConnectionFactory"
correlation-key="JMSCorrelationID"
request-channel="senExtractProcessingWorkerRequestChannel"
request-destination-name="senExtractRequestQueue"
reply-channel="senExtractProcessingWorkerReplyChannel"
default-reply-queue-name="senExtractReplyQueue"
auto-startup="false"
concurrent-consumers="25"
max-concurrent-consumers="25"
max-messages-per-task="1"
reply-timeout="1200000"
receive-timeout="1200000"/>
<bean id="workerPollerTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="25"/>
<property name="maxPoolSize" value="25"/>
<property name="queueCapacity" value="200"/>
</bean>