控制Mule中的线程数

时间:2013-05-29 19:26:14

标签: threadpool mule

我正在使用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接受了这个,但服务不再返回;客户端只是等待响应。

如何配置我的流程以便我可以控制线程池大小,一旦完成,所以池中只有一个线程可用?

1 个答案:

答案 0 :(得分:3)

您需要配置HTTP连接器的receiver-threading-profile

<http:connector name="httpConnector">
  <receiver-threading-profile maxThreadsActive="1" />
</http:connector>