I am having trouble tracking down a bug with PERSISTENT messages not being delivered. The problem only occurs when the client receiving the messages is under high load.
Here is the code used to send the messages:
topicPublisher.publish(msg, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, 172800000L);
and the code used to receive the messages:
while(ready) {
Message msg = subscriber.receive();
if (msg != null) {
//... do something
}
}
In my testing I've discovered that when the client is under high load, sometimes the receive() just blocks indefinitely without delivering a message. I know the message is getting delivered to the topic because I have a different client (a MessageBean) that does correctly receive the message.
The subscriber is NOT a durable subscription, but I still should be getting the once-and-only-once semantics that PERSISTENT requires while the subscription is alive. The relevant parts of my jboss.jcml file looks like:
../../db/jbossmq/
However, I've noticed that the db/jbossmq directory does not have any files for the messages that I've sent. Should it have them?
Any help solving this problem is greatly appreciated. This is currently a show-stopper bug preventing us from going live with a major enterprise app.