3

Mule 3.3.1 Community Edition を使用しています。

HTTP リクエストを受け入れるフローがあります。これは正常に実行されます。

<flow name="TestFlow">
    <http:inbound-endpoint exchange-pattern="request-response" 
        host="localhost" port="8088" path="test" doc:name="HTTP" mimeType="text/plain"
        encoding="UTF-8"/>
    <logger level="INFO" category="hello" doc:name="Logger"/>
</flow>

メッセージが受信された順序で厳密に処理されるように、サービスはシングルスレッドである必要があります。私の考えは、 maxThreadsActive=1 と maxBufferSize=100 を設定して、目的の動作を実現することでした。ただし、スレッドを制御して動作させることはできません。

この時点で、スレッドの数に関係なく、スレッド プロファイルを機能させようとしています。マニングの本Mule in Actionの現在のバージョンから正確にスレッド化プロファイルを追加しましたが、Mule はそれを「無効なコンテンツ」として拒否し、実行しません。

<flow name="TestFlow">
    <threading-profile maxBufferSize="100" maxThreadsActive="20" maxThreadsIdle="10"
        threadTTL="60000" poolExhaustedAction="RUN" />

    <http:inbound-endpoint exchange-pattern="request-response" 
        host="localhost" port="8088" path="test" doc:name="HTTP" mimeType="text/plain"
        encoding="UTF-8"/>
    <logger level="INFO" category="hello" doc:name="Logger"/>
</flow>

それをコメントアウトして、構成ブロックに移動しました。

<configuration>
    <default-threading-profile maxThreadsActive="20" maxBufferSize="100" 
         poolExhaustedAction="RUN" />
</configuration>

<flow name="TestFlow">
    <http:inbound-endpoint exchange-pattern="request-response" 
        host="localhost" port="8088" path="test" doc:name="HTTP" mimeType="text/plain"
        encoding="UTF-8"/>
    <logger level="INFO" category="hello" doc:name="Logger"/>
</flow> 

Mule はこれを受け入れますが、サービスは返されなくなります。クライアントは単に応答を待ってハングします。

スレッド プールのサイズを制御できるようにフローを構成し、それが完了したら、プールで使用できるスレッドが 1 つだけになるようにするにはどうすればよいですか?

4

1 に答える 1