Mule ESB 3.3 Wie zu Beginn Transaktions-Ströme gleichzeitig

Ich möchte zum verarbeiten von Nachrichten, die gleichzeitig, aber ich kann nicht verwalten, um Sie transacional, es sei denn, ich habe die VM Anfrage-Antwort... in dem Fall die Verarbeitung ist nicht concurrent.

Mule Dokumentation Staaten, die "Mule-Transaktionen konfiguriert sind, synchronen Endpunkten, aber ich verstehe nicht ganz, diese Einschränkung.

Es ist klar, dass in einer Strömung, die Sie sein wollen, Transaktions-sollte man nicht spawn asynch fließt, aber es ist nicht klar (zu mich), warum man nicht starten kann (von einem nicht-tx-Haupt-flow) eine beliebige Anzahl von asynchronen fließt jede Transaktion.

In anderen Worten: warum funktioniert das gut:

Mule ESB 3.3 Wie zu Beginn Transaktions-Ströme gleichzeitig

aber wenn ich die VM ' s auf "one-way" schlägt er mit:

org.mule.transaction.IllegalTransactionStateException: Can only bind "javax.sql.DataSource/java.sql.Connection" type resources

Gibt es eine Möglichkeit, um dieses?

XML für den Fluss:

<?xml version="1.0" encoding="UTF-8"?>
<mule>
    <spring:beans>
        <spring:bean id="dataSource" name="dataSource" class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown">
            <spring:property name="driverName" value="org.h2.Driver" />
            <spring:property name="url" value="jdbc:h2:tcp://localhost/~/mule" />
            <spring:property name="user" value="sa" />
            <spring:property name="password">
                <spring:value></spring:value>
            </spring:property>
        </spring:bean>

        <spring:bean id="transactionFactory" name="transactionFactory" class="org.mule.transport.jdbc.JdbcTransactionFactory" />

    </spring:beans>

    <jdbc:connector name="dbConnector" dataSource-ref="dataSource" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database" />

    <flow name="triggerFlow" doc:name="triggerFlow">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" />
        <set-payload value="#[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]" doc:name="[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"/>
        <collection-splitter doc:name="Collection Splitter"/>
        <vm:outbound-endpoint exchange-pattern="request-response" path="flow" doc:name="flow" />
    </flow>

    <flow name="flow" doc:name="flow">
        <vm:inbound-endpoint exchange-pattern="request-response" path="flow" doc:name="flow">
            <custom-transaction factory-ref="transactionFactory" action="ALWAYS_BEGIN" timeout="10" />
        </vm:inbound-endpoint>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="insert" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 1">
            <jdbc:transaction action="ALWAYS_JOIN" />
            <jdbc:query key="insert" value="insert into test values (#[payload], 'Test 1')" />
        </jdbc:outbound-endpoint>
        <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="insert2" queryTimeout="-1" connector-ref="dbConnector" doc:name="Insert 2">
            <jdbc:transaction action="ALWAYS_JOIN" />
            <jdbc:query key="insert2" value="insert into test values (#[payload + 10], 'Test 2')" />
        </jdbc:outbound-endpoint>
    </flow>

</mule>

Vielen Dank im Voraus.

InformationsquelleAutor pakman | 2013-01-11
Schreibe einen Kommentar