Ok, I'm using the Apache Muse product to build a WS-Notification 1.3 based 
message broker.  JBoss Messaging is used as a message store to buffer messages 
between senders/receivers.  Clients can publish and subscribe using the web 
services offered by Muse.  When a message is published to the system, Muse 
determines the client endpoints that should receive the message.  These 
messages are written to client specific JMS queues for eventual delivery.  A 
separate thread pool has periodically scheduled client delivery tasks that, 
within a single transaction, read messages from a client-specific queue and 
then attempt to deliver a batch of messages to the client using the WS-Notify 
SOAP message.  If the delivery fails (client unavailable) the transaction is 
rolled back.  Use of the thread pool results in different threads attempting 
delivery to the remote endpoint, so I use a thread local variable to cache the 
session and a map of session to messageconsumer for each client delivery!
  task.  JMS is providing time-to-live, prioritization, and message persistence.

I modified the DefaultMaxDeliveryAttempts to -1 to prevent rollbacks from 
causing messages to be sent to the DLQ.

The rollback semantics are where questions arise.  When I rollback, the 
messages appear to be marked for redelivery only by the messageconsumer that 
read them.  The messages are not visible to other messageconsumers at that 
point.

I believe I attempted closing the consumers and then rolling back the session, 
but that seemed to destroy the messages instead of replacing them on the queue.

I hope this gives a more complete picture of what I'm attempting to do.

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4140495

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to