我正在使用 Mule 3.3.1 社区版。
我有一个接受 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 以获得我想要的行为。但是,我无法控制线程工作。
在这一点上,我只是想让线程配置文件正常工作,而不管线程的数量。我在 Manning 的《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 接受了这一点,但服务不再返回;客户端只是挂起等待响应。
如何配置我的流程以便我可以控制线程池大小,并且一旦完成,池中只有一个线程可用?