4 Stimmen

jms Mule max redelivery überschritten

Ich habe eine sehr einfache Einrichtung von MULE, die aus der HornetQ-Warteschlange liest und das Objekt in der Datenbank speichert:

Einrichtung unten:

<jms:connector name="connector.jms" maxRedelivery="1" connectionFactory-ref="hornetQConnectionFactory" doc:name="JMS"
        createMultipleTransactedReceivers="true"
        numberOfConcurrentTransactedReceivers="100"
        acknowledgementMode="AUTO_ACKNOWLEDGE">
    <reconnect count="50" frequency="5000"/>       
</jms:connector>
<flow name="jmsListenerFlow1" doc:name="jmsListenerFlow1">
    <jms:inbound-endpoint queue="adsLogQueue" connector-ref="connector.jms" doc:name="JMS">
        <jms:transaction action="ALWAYS_BEGIN"/>
    </jms:inbound-endpoint>
    <component >
        <spring-object bean="logSaver"/>
    </component>

</flow>

Warum erhalte ich die Meldung, dass die Nachricht 9 Mal am Endpunkt erneut zugestellt wurde, obwohl die Einstellung maxRedelivery 1 ist? Was bedeutet das genau?

hornetQConnectionFactory:

        <bean name="hornetQTransportConfiguration" class="org.hornetq.api.core.TransportConfiguration">
        <constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"/>
        <constructor-arg>
            <map>
                <entry key="host" value="${jms.host}" /> 
                <entry key="port" value="${jms.port}" /> 
            </map>
        </constructor-arg>

    </bean>
    <bean name="hornetQConnectionFactory" class="org.hornetq.jms.client.HornetQJMSConnectionFactory">
        <constructor-arg index="0" value="false"/>
        <constructor-arg index="1" ref="hornetQTransportConfiguration"/>
        <property name="minLargeMessageSize" value="250000"/>
        <property name="cacheLargeMessagesClient" value="false"/>
    </bean>

Für jede Hilfe sind wir dankbar!

Stack-Trace unten.

ERROR 2012-10-19 01:04:07,283 \[Thread-3013 (HornetQ-client-global-threads-1442093417)\]: 

Message               : "Message with id "ID:e6a0b303-1977-11e2-96d4-810571a3fe10" has been redelivered 9 times on endpoint "jms://adsLogQueue", which exceeds the maxRedelivery setting of 1 on the connector "connector.jms". Message payload is of type: HornetQObjectMessage
Code                  : MULE\_ERROR--2

Exception stack is:
1. "Message with id "ID:e6a0b303-1977-11e2-96d4-810571a3fe10" has been redelivered 9 times on endpoint "jms://adsLogQueue", which exceeds the maxRedelivery setting of 1 on the connector "connector.jms". Message payload is of type: HornetQObjectMessage (org.mule.transport.jms.redelivery.MessageRedeliveredException)
  org.mule.transport.jms.redelivery.JmsXRedeliveryHandler:91 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/transport/jms/redelivery/MessageRedeliveredException.html)

Root Exception stack trace:
org.mule.transport.jms.redelivery.MessageRedeliveredException: "Message with id "ID:e6a0b303-1977-11e2-96d4-810571a3fe10" has been redelivered 9 times on endpoint "jms://adsLogQueue", which exceeds the maxRedelivery setting of 1 on the connector "connector.jms". Message payload is of type: HornetQObjectMessage
    at org.mule.transport.jms.redelivery.JmsXRedeliveryHandler.handleRedelivery(JmsXRedeliveryHandler.java:91)
    at org.mule.transport.jms.MultiConsumerJmsMessageReceiver$JmsWorker.preProcessMessage(MultiConsumerJmsMessageReceiver.java:418)
    at org.mule.transport.AbstractReceiverWorker$1$1.process(AbstractReceiverWorker.java:120)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

6voto

David Dossot Punkte 33368

Als erstes ist zu beachten, dass Mule die JmsXRedeliveryHandler , was bedeutet, dass HornetQ die Option JMS_X_DELIVERY_COUNT Kopfzeile und kümmert sich um die Zählung der Rücklieferungen. In dieser Situation verlässt sich Mule vollständig auf HornetQ, um eine genaue Zählung der erneuten Zustellungen zu gewährleisten.

Die Tatsache, dass diese Ausnahme ausgelöst wird, bedeutet, dass eine JMS-Nachricht an Mule mit einer Wiederzustellungszahl übergeben wurde, die die im JMS-Konnektor konfigurierte Zahl (in Ihrem Fall 1) übersteigt.

Da Sie in einer Transaktion konsumieren, ist es wahrscheinlich, dass HornetQ bei jedem Neustart diese Nachricht an Mule zurückschickt, und zwar immer wieder, es sei denn, Sie haben in HornetQ selbst eine maximale Anzahl von Wiederauslieferungen konfiguriert.

Mein Rat ist: Setzen Sie die gleiche Anzahl an Wiederauslieferungen auf Mule und HornetQ oder verwenden Sie -1 auf Mule (keine Begrenzung) und verlassen Sie sich voll und ganz auf die Wiederauslieferungsgrenze von HornetQ.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X