The following is on JBoss5-beta4.
I'm currently working on a project where we send Objects to a purgatory queue if none
of out services are available. The idea is that the messages will be kept here until the a
suitable service is deployed again that can handle the message.
Setting MaxDeliveryAttempts set to 10 and RedeliveryDelay set to 5000 for the queue
"queue/jboss/purgatory" I expected the following:
- ServiceManager notices there are no Services available and puts the object on the
purgatory queue.
- PurgatoryMDB picks up the message immediately and throws and Exception or does a
Rollback to requeue the message for 5 seconds.
- After 5 seconds PurgatoryMDB picks up the message again, checks with ServiceManager has
a Service available now and if so passes it back to the ServiceManager. If not it is
requeued again for 10 times before being sent to the DLQ.
The queue config is
<mbean code="org.jboss.jms.server.destination.QueueService"
| name="jboss.messaging.destination:service=Queue,name=purgatory"
| xmbean-dd="xmdesc/Queue-xmbean.xml">
|
<annotation>(a)org.jboss.system.deployers.managed.ManagementObjectClass(code=org.jboss.jms.server.destination.QueueServiceMO)</annotation>
| <depends
optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
| <depends>jboss.messaging:service=PostOffice</depends>
| <attribute
name="JNDIName">queue/jboss/purgatory</attribute>
| <attribute name="MaxDeliveryAttempts">10</attribute>
| <attribute name="RedeliveryDelay">5000</attribute>
| </mbean>
If I throw an EJBException from in the MDB to trigger the requeueing I see if being
requeued and picked up immediately 5 times before it is sent to the DLQ.
If I have
@Resource
| private MessageDrivenContext context; and do context.setRollbackOnly(); it is again
requeued and picked up immediately and never gets put on the DLQ.
The PurgatoryMDB is configured with
@MessageDriven(activationConfig = {
| @ActivationConfigProperty(propertyName = "destinationType", propertyValue
= "javax.jms.Queue"),
| @ActivationConfigProperty(propertyName = "destination", propertyValue =
"queue/jboss/purgatory") })
|
What do I need to do to make JBoss5 use the attributes I have set in the queue
configuration?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4162066#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...