We found a problem on JMS. I am not sure if it is my configuration problem. I wrote a simple MDB. At client side, when I put a small size ObjectMessage into the queue, MDB works fine. Only one MDB pickups and processes the message for one time. The processing time is less than 1 minute.
However, when I put a big size ObjectMessage (~MB) into the queue and MDB needs to process a little longer for a message (processing time is 4 minutes), I found there are serveral MDB which sequentially pick up the same message from the queue and process it. I wonder if I should set something for message persistence to solve this problem. Also, I check localDB.log, I saw it consistently write message to the queue by jboss (not client for sure) and delete message from the queue, like this:
INSERT INTO JMS_MESSAGES VALUES(4,'QUEUE.myQueue',NULL,'A','aced0....
...
COMMIT
DELETE FROM JMS_MESSAGES WHERE MESSAGEID=4 AND DESTINATION='QUEUE.myQueue'
INSERT INTO JMS_MESSAGES VALUES(4,'QUEUE.myQueue',NULL,'A','aced0....
...
COMMIT
DELETE FROM JMS_MESSAGES WHERE MESSAGEID=4 AND DESTINATION='QUEUE.myQueue'
INSERT INTO JMS_MESSAGES VALUES(4,'QUEUE.myQueue',NULL,'A','aced0....
...
COMMIT
DELETE FROM JMS_MESSAGES WHERE MESSAGEID=4 AND DESTINATION='QUEUE.myQueue'
....
However, I couldnot find "DELETE FROM JMS_TRANSACTIONS ..". When the message is small job, I can see "DELETE FROM JMS_TRANSACTIONS..." after "DELETE FROM JMS_MESSAGES WHERE ..".
Any idea? If I use transacted queuesession, could that help?