My first thought is that your HTTP call is blocking when the server is not reachable and that is preventing the MDB from consuming further messages.
In any event, I think that once you observe this problem you'd need to get a few thread dumps to investigate further.
Thank you for your answer. The HTTP calls happens inside onMessage method, and from the log we can see that last time it returns from onMessage method, and this time it never enters into onMessage method. So i thought it has sth to do with Hornetq, somehow the consumer session is lost or sucked before triggers MDB or after triggers MDB.
Yes, of course the thread dump is useful, but this problem has on customer site twice and they are not able to provide us the dump, then we are still not able to reproduce it in design env.
You can check the consumerCount for the queue where the MDB is listening to ensure the MDB's session is still active.
Ok, i will. What happens if consumerCount becomes 0? Does it mean the consumer is lost/dead? Do you know in what case consumer could die?
What happens if consumerCount becomes 0? Does it mean the consumer is lost/dead?
If the consumerCount is 0 that means that the MDB's session died for some reason.
Do you know in what case consumer could die?
Such a scenario is not simple enough to provide a list of definitive cases where it might happen. Further investigation would be required, preferably with a reproducible test-case.
BTW, what version of HornetQ is being used?