3

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

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

4

1 回答 1

3

您需要配置receiver-threading-profileHTTP 连接器的:

<http:connector name="httpConnector">
  <receiver-threading-profile maxThreadsActive="1" />
</http:connector>
于 2013-05-29T19:57:00.807 回答