Bonjour !

Je viens vers vous afin de savoir si vous auriez déjà rencontré des problèmes lors de la configuration de MQ (jboss 4.2.0 ou 4.2.3). Le problème auquel je suis confronté est que jboss ne semble pas prendre en compte l'attribut RedeliveryLimit qui permet de limiter le nombre de rollback d'un message.

Grâce à la console JMX, j'observe que cette limite est à -1 (autrement dis, y en a pas... hum). Meme en changeant la valeur et en placant 3 (par jmx donc), le message est continuellement reçu par le listener (qui lance une RuntimeException à chaque fois qui voit le message), le nombre de tentative semble être infini (enfin j'ai pas attendu jusque là ^^). La méthode onMessage() de mon listener est donc appelée sans cesse. Le problème ne semble pas venir de Spring JMS car si je met un delay dans Jboss, le onMessage() est aussi delayée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    <mbean code="org.jboss.mq.server.jmx.Queue"
           name="jboss.mq.destination:service=Queue,name=com.bsb.sf.incubator.jms.queueA">
        <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>-->
        <atttribute name="RedeliveryLimit">3</atttribute>
        <!--<attribute name="DLQ">jboss.mq.destination:service=Queue,name=com.bsb.sf.incubator.jms.testDLQ</attribute>-->
    </mbean>
Mon listener est défini comme tel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="concurrentConsumers" value="3"/>
        <property name="messageListener" ref="exceptionMessageListenerQueueA"/>
 
        <property name="destinationName" value="queueA" />
        <property name="destinationResolver" ref="destinationResolver" />
        <property name="sessionTransacted" value="true"/>
 
        <property name="connectionFactory" ref="connectionFactory" />
    </bean>
Pour info, mon listener ressemble à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    public void onMessage(Message message) {
        boolean isSuccessfullyReceived = false;
        try {
            if ( throwingPolicy != null )
            {
                throwingPolicy.throwExceptionIfRequired(message, this);
            }
            isSuccessfullyReceived = true;
        } finally {
            final String messageId = messageIdentifierService.getMessageIdentifier(message);
            if (isSuccessfullyReceived) {
                logger.debug("Message [" + message + "] has been successfully received.");
                onCompleted(messageId, message);
            } else {
                logger.debug("Message [" + message + "] has NOT been successfully received.");
                onException(messageId, message);
            }
        }
    }
Quelqu'un aurait-il une idée ?

Merci beaucoup !