[jboss-user] [EJB 3.0] - Server side (MaxDeliveryAttempts) vs Client-Side (DLQMaxRese

bainwohl do-not-reply at jboss.com
Mon May 25 16:55:21 EDT 2009


After successfully configuring a custom destination (so I thought) with the following customization(s) ...

  <mbean code="org.jboss.jms.server.destination.QueueService"
         name="jboss.messaging.destination:service=Queue,name=prototype_PacketResendQ"
         xmbean-dd="xmdesc/Queue-xmbean.xml">

    jboss.messaging.destination:service=Queue,name=prototype_DLQ
    jboss.messaging.destination:service=Queue,name=prototype_ExpiryQ

    <!-- Redelivery delay (defaults to 10min=10*60*1000ms if not set -->
    ${config.dest.prototype_PacketResendQ.RedeliveryDelayInMs:600000} 

    <!-- The maximum times a message is nacked before a -->
    <!-- message is sent to the Dead Letter Queue       -->
    <!--                                                -->
    <!--  0  - don't redeliver                          -->
    <!--  n  - redeliver n times                        -->
    <!-- -1  - continue redelivering indefinitely       -->    
    1000

    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
    jboss.messaging:service=PostOffice
        ... etc...

I observed that the custom RedeliveryDelay setting was working great, but the MaxDeliveryAttempts setting was being ignored ... messages were always sent to the DLQ on the 6th attempt:

([AbstractDLQHandler] Message redelivered=6 max=5 sending it to the dlq delegator->JBossMessage[20364378959495170]:NON-PERSISTENT, deliveryId=6 ...)

Also, the message was being sent to the default DLQ, rather than my custom prototype_DLQ.

Eventually, I was able to resolve the issue via client side configuration. More specifically, I can get the desired effect of MaxDeliveryAttempts and DLQ via ActivationConfigProperty(s) against the MDB (DLQMaxResent,DLQJNDIName).

@ActivationConfigProperty(propertyName="DLQMaxResent",propertyValue="50000"),
@ActivationConfigProperty(propertyName="DLQJNDIName",propertyValue="queue/prototype_DLQ")

Unfortunately, while the MaxDeliveryAttempts does support -1 (redelivery forever), the DQLMaxResent does not!

I'd really like to configure the destination, rather that the MDB listening on that destination. In otherwords, eliminate the need for the ActivationConfigProperty(s) DLQMaxResent and DLQJNDIName.

How can I do this ... obviously there's some default DLQMaxResent=5 setting which is overriding my MaxDeliveryAttempts setting; likewise for the specification of a custom DLQ.

Any assistance would be appreciated ... cheers.

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

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



More information about the jboss-user mailing list