【发布时间】:2020-05-14 13:14:53
【问题描述】:
我们在 Wildfly 集群(版本 18)或 JBoss EAP 7.x 中运行一系列 Spring Batch 分区作业。我们想对集群周围的分区进行轮询。所以outbound gate方式使用了ActiveMQ定义的activemq-ra pooled connection factory和round robin load策略。这部分似乎按预期工作。
此外,每个节点都有一个入站网关来接收分区消息。入站网关配置有 InVMConnectionfactory。目标是每个节点只处理放置在其队列中的消息。
这种方法适用于 JBoss EAP 5.x。
我们观察到入站网关的 x 个侦听器线程开始正常工作。但是,随着我们处理更多分区作业的批处理序列,处理入站消息的线程数量减少,导致消息留在队列中,分区步骤串行而不是并行运行。
这种行为甚至可以在单节点服务器上遇到,但在集群上更糟。所以看来问题出在入站网关侦听器和用于检查消息的 activeMQ 连接中。
谁能推荐如何进一步识别和解决这个问题?
谢谢
【问题讨论】:
-
您的消费者是如何配置的?你在使用 MDB 吗?请详细说明。
-
这是使用 Spring Batch 分区,它使用来自 Spring 集成的 JmsInboundGateway 类。我相信最终解决为 Spring DefaultMessageListenerContainer
-
我的回答是否解决了您的评论?如果是这样,请将其标记为正确,以帮助将来有同样问题的其他用户。如果没有,请详细说明缺少什么。谢谢!
标签: spring-integration spring-batch spring-jms activemq-artemis jboss-eap-7