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 つだけになるようにするにはどうすればよいですか?