Currently I am using a MDB which uses container-controlled transactions. The 
MDB can specify to rollback the transaction, at which point it gets re-tried.

A new situation has arisen where I don't want certain messages from being 
placed on the JMS queue while other (possibly conflicting) messages are being 
run.

When we have a message ready to place on the JMS queue, the solution proposed 
involves:

1) checking whether any conflicting messages are currently queued
     a. if so, block until they have completed
     b. if not, proceed and block subsequent messages from queuing until
         this unit of work is complete
2) place the message on the JMS queue
3) when the message/unit of work is complete, signal the waiting messages (from 
1.a) that they can proceed


Can the transaction settings for MDBs be changed such that I can manually 
commit the transaction within the bean and then perform this signalling step 
(step 3) from within the bean, while still maintaining the ability to rollback 
the transaction and have the JMS provider re-invoke the MDB (as you would see 
using Container managed transactions, where the transaction is not started in 
the bean itself). 

Alternatively, is there a way of attaching a listener to a particular 
message/unit of work so that I may know when it has dropped out of the active 
JMS system (either by being successfully processed or by rolling back the 
maximum number of times)? I could then do the Step 3 work in this listener.

Or thirdly is there a superior solution to what I've outlined above?

Any help is greatly appreciated.

I use JBoss4.0.3SP1.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201915#4201915

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201915
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to