Access Keys:
Skip to content (Access Key - 0)

JMSセッションがトランザクション対応で、メッセージがロールバックされると、メッセージに JMSRedelivered が設定されます。ESB Muleをこのフラグで判定してメッセージを再送信するように設定できます。 JmsConnectormaxRedelivery プロパティを設定すると再送信がされます。このプロパティは、コネクタにX 回、再送信させ、正常に送信できない場合は MessageRedeliveredException 例外を投げます。その後に、このコネクタの例外処理を利用してメッセージを送達不能キュー(DLQ)に転送させることができます。
以下はActiveMQを利用したJmsConnectorの設定です。他JMSサーバの設定に付いてはJMSの設定を参照にしてください。

<connector name="JMSConnector" className="org.mule.providers.jms.JmsConnector">
    <properties>
        <property name="acknowledgeMode" value="1"/>
        <property name="connectionFactoryJndiName" value="ConnectionFactory"/>
        <property name="jndiInitialFactory" 
            value="org.codehaus.activemq.jndi.ActiveMQInitialContextFactory"/>
        <property name="specification" value="1.1"/>
        <!-- how many times to try and deliver a redelivered message -->
        <property name="maxRedelivery" value="2"/>
    </properties>
        
    <exception-strategy className="org.mule.impl.DefaultExceptionStrategy">
        <endpoint address="jms://DLQ">
            <transaction action="JOIN_IF_POSSIBLE"/>
        </endpoint>
    </exception-strategy>
</connector>

上の設定は、メッセージを3回まで送信します。1回は初めてメッセージを送信する場合で、後の2回は正常に送信できなかった場合の再送信です。3回目で正常に送信が出来なかった場合は、コネクタの例外処理が実行されます。エンドポイントの例外処理に JOIN_IF_POSSIBLE を定義するトランザクション要素があることに注目してください。この設定は、ESB Muleに実行中のJMSトランザクションがある場合は、同じトランザクション内でDLQへ書き出すように指示をします。

Adaptavist Theme Builder (3.3.2-conf2.10) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license