1

We are facing a problem, where every 15th message does not get read from the message queue until an MDB instance does not finish working on the first message.

We have a timeToLive of 30 secs for the messages. If the first message consumption takes much more time then that, then the stuck messages stay in the queue for more then 30 secs, and thus timeout when the slow message consumption stops.

MDB pool size is 20, but have tried 30, 10, ... makes no difference.

the scenario looks like this:

#1 SLOW message goes in queue, MDB onMessage() called, message processing.

#2-14 messages go in queue, MDB onMessage() called, messages processed.

#15 message goes in queue, message not touched.

#16-29 messages go in queue, MDB onMessage() called, message processed.

#30 message goes in queue, message not touched.

... every 15th gets stuck

#1 finishes, then immediately every 15th message (which got stuck) gets thrown away due to message timeout.

It's always every 15th message...

We are on JBOSS EAP 6.1 and using JAVA 7

Can anyone give us some tips on this issue, what could be the cause, where to look? Something has to be configured to a number of 15 which is causing this, but we have no clue on to what it could be.

Thanks in advance!

Zuller
  • 177
  • 1
  • 11
  • 1
    Maybe this is somehow related to some batch consuming feature? – Konstantin V. Salikhov Feb 03 '14 at 17:02
  • 1
    I don't know how your messages are prioritized. But, how about setting JMSPriority low for slow messages? – IndoKnight Feb 03 '14 at 19:53
  • Prioritizing the messages in this way would not work unfortunetely, as a slow message is slow if there is a service issue on a backend which the MDB tries to reach. And we already have a prioritizing strategy, which is currently equal for all messages. Could be some batch consuming, but I don't really know where to look – Zuller Feb 04 '14 at 10:23
  • I have edit the question after some more thorough testing – Zuller Feb 05 '14 at 09:47
  • Hi, can you tell me where can i find the messages sent int the queue? If there was. Thanks. – Makudex Sep 15 '15 at 00:59

1 Answers1

0

I have solved the problem.

It is because of hornetq window based flow control.

This post contains the solution: JMS queue with multiple consumers

Community
  • 1
  • 1
Zuller
  • 177
  • 1
  • 11