Reputation: 639
We are running a series of Spring Batch partitioned jobs in a wildfly cluster (version 18) or JBoss EAP 7.x . We want to round robin the partitions around the cluster. So the outbound gate way uses the ActiveMQ defined activemq-ra pooled connection factory with the round robin load strategy. This part appears to be working as expected.
In addition, each node has an inbound gateway to receive the partition messages. The inbound gateway is configured with the InVMConnectionfactory. The goal is for each node only processes messages placed in it's queue.
This approach worked for JBoss EAP 5.x.
What we observe is the x listener threads for the inbound gateway start working fine. But as we progress through the batch processing sequence with more partitioned jobs, the number of threads processing the inbound messages decreases leading to messages left in the queue and partitioned steps running in series instead of parallel.
This behavior can even be experienced on a single node server but is much worse on the cluster. So it appears the problem is in the inbound gateway listener and the activeMQ connections to check for messages.
Can anyone recommend how to further identify and resolve this issue?
Thanks
Upvotes: 0
Views: 224
Reputation: 35038
It sounds like some consumers are starving because other consumers are holding unconsumed messages in their buffer. Try setting consumerWindowSize=0
on the URL which the consumers are using. You can read more about this setting in ActiveMQ Artemis documentation.
Upvotes: 0