losing messages publishing to topics
cballew Nov 19, 2004 10:12 PMWe were doing some stress testing on some code that we're getting ready to deploy to production soon. Basically for brevity I've done my code home work and searches and read the wiki's, done the googles, etc. If I missed, my apologies because I tried my best and yes I looked to the jboss source to try to discover the issue. I am using the released 4.0.0 build. default configuration with the only variance being a switch using the doc/examples sql server stuff for hooking up to sql server and no change trying against hsql.
I have narrowed the issue to the client/publish part of the code. I have established that everything that makes it into jms_messages gets delivered to the onMessage on the other side and we've tested against both sql server and hsql and have used the jtds driver and also tried the ms sql jdbc driver. we have validated that that I get to the code after the actual publish without exception for each message slated to be delivered. The test senario had us trying 5k messages that compress before sending and sent as bytemessage for each instance of our publisher. I have 40 publishers sending to 40 topic with 40 receivers. the counts have been in blocks 20K, 10K, 5K and a few runs of just 10 messages. I spread the spread of messages over the 40 at 5 per second randomly, but evenly spread so everyone of them gets hit ( of course not the case with the 10 :-) No matter what we do I either lose between 8 - 14 or go over by 2 to 4 messages. this I verfied by turning off the durable subscribers on several of the runs and without exception, we get everything that makes it to the jboss.mq store, I always see the shortages or overages in the store itself. I will post the code for the send on request and we definitely get to the end of the send code without an exception. we are auto ack on the publish. Only 1 durable subscriber to a topic. BTW, JBoss rocks and this is the only real issue I've had, but it's a biggie. I am persistent on the send and I have tried setting the delivery mode directly in the publish method and using the setDeliveryMode on the TopicPublisher. The call on the publish looks like the following:
tPub.publish(t,msg,DeliveryMode.PERSISTENT,4,0);
No exception appears in the logs, everything looks normal, but for some reason a few of the messages never make it or make it more than once. the number of times I get to the end of my publish code exactly matches the number sent, never more or less. All the code lives as jboss servicembeans and is hosted on the same instance of jboss.
thanks in advance for any aide.