We have a queue system where we partially use event-style message processing via the ClientConsumer.setMessageHandler() method. Forgot to mention that we are using the core-API.
During testing I found out that with two such consumers on the same queue not sharing the same session (in this case they were even on different machines) the CPU load goes to 100% for the HornetQ-server-HornetQServerImpl thread in charge,
I see two consumers in JMX console for that queue but no messages get delivered anymore and the client run into timeouts.
If that scenario happens on a second queue that HornetQ-server-HornetQServerImpl thread is also going to 100% CPU and so on until the machine becomes unresponsive.
The consumers had no filters set. When using filters I could not monitor that behavior.
So the questions is: Is it permitted to use two asynchronous consumers on the same queue at all? And if yes why is the server thread seemingly running in an endless loop?