1

フローで次の fork と join パターンを使用しています。並列処理は問題なく動作します。ただし、例外処理に問題があります。ルーターの VM 応答インバウンド エンドポイントで発生する処理の例外戦略を実装したいと考えています。ただし、キャッチ例外戦略ブロック内から応答に書き込もうとすると、何も起こらないようです。例外が発生した場合、catch ブロックからログ ステートメントを確認できますが、ブラウザの応答がハングするだけです。提案してください。

<flow name="forkAndJoinFlow" doc:name="forkAndJoinFlow">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="81" path="lowestprice" doc:name="HTTP"/>
        <not-filter doc:name="Not">
            <wildcard-filter pattern="*favicon*" caseSensitive="true"/>
        </not-filter>
        <request-reply>
            <all>
                <vm:outbound-endpoint path="shop1"/>
                <vm:outbound-endpoint path="shop2"/>
            </all>
            <vm:inbound-endpoint path="response">
                <message-properties-transformer>
                    <add-message-property key="MULE_CORRELATION_GROUP_SIZE" value="2" />
                </message-properties-transformer>
                <collection-aggregator />
            </vm:inbound-endpoint>
        </request-reply>
        <expression-transformer evaluator="groovy" expression="java.util.Collections.min(payload)" doc:name="Expression"/>
        <object-to-string-transformer doc:name="Object to String"/>
        <logger level="WARN" message="#[string:Lowest price: #[payload]]" doc:name="Logger"/>

<catch-exception-strategy doc:name="Catch Exception Strategy">
            <logger message="EXCEPTION:#[payload]" level="INFO" doc:name="Logger"></logger>
<!--Nothing happens after this-->

<object-to-string-transformer doc:name="Object to String"></object-to-string-transformer></catch-exception-strategy>

    </flow>

    <flow name="shop1Flow" doc:name="shop1Flow">

        <vm:inbound-endpoint path="shop1" doc:name="VM"/>
        <logger level="INFO" message="SHOP1 Flow..." doc:name="Logger"/>
        <expression-transformer evaluator="groovy" expression="new java.lang.Double(1000.0 * Math.random()).intValue()" doc:name="Expression"/>
        <logger level="WARN" message="#[string:Price from shop 1: #[payload]]" doc:name="Logger"/>


    </flow>

    <flow name="shop2Flow" doc:name="shop2Flow">

        <vm:inbound-endpoint path="shop2" doc:name="VM"/>
        <logger level="INFO" message="SHOP2 Flow..." doc:name="Logger"/>
        <expression-transformer evaluator="groovy" expression="new java.lang.Double(1000.0 * Math.random()).intValue()" doc:name="Expression"/>
        <logger level="WARN" message="#[string:Price from shop 2: #[payload]]" doc:name="Logger"/>`enter code here`
    </flow>

</mule>
4

0 に答える 0