Configure a TX on the outbound router (not endpoint)

View: New views
1 Messages — Rating Filter:   Alert me  

Configure a TX on the outbound router (not endpoint)

by Andrew Perepelytsya :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I can't configure a TX on the router in Mule 2, because this case was never accounted for. However, it is critical in some scenarios when a TX is started on the outbound. Here's a valid 1.4.4 config:

<mule-descriptor name="Part2" implementation="org.mule.tck.functional.FunctionalTestComponent" singleton="true">
            <inbound-router>
                <endpoint address="vm://middle">
                </endpoint>
            </inbound-router>
            <outbound-router>
                <router className="org.mule.routing.outbound.OutboundPassThroughRouter">
                    <endpoint address="jms://out" connector="jmsConnector2">
                        <transaction action="BEGIN_OR_JOIN"
                                     factory="org.mule.providers.jms.JmsTransactionFactory"/>
                    </endpoint>
                    <transaction action="ALWAYS_BEGIN"
                                 factory="org.mule.providers.jms.JmsTransactionFactory"/>
                </router>
            </outbound-router>
            <properties>
            <property name="returnMessage" value="OUTPUT MESSAGE"/>
            </properties>
        </mule-descriptor>


Note the different TX actions on the router and endpoint. What's important is the TX had to be started on the router level, otherwise it wouldn't work. In fact, I've already confirmed this problem in Mule 2.0.1 when declaring a TX on jms outbound doesn't work (locks the sending thread).

Andrew
LightInTheBox - Buy quality products at wholesale price