2013-05-29 3 views
3

뮬 3.3.1 커뮤니티 에디션을 사용하고 있습니다.뮬의 스레드 수 제어하기

HTTP 요청을 받아들이는 흐름이 있습니다. 이것은 성공적으로 실행됩니다.

서비스는 메시지가 수신 된 순서대로 엄격하게 처리되도록 단일 스레드되어야합니다. 내 생각은 내 원하는 동작을 얻으려면 maxThreadsActive = 1 및 maxBufferSize = 100 설정하는 것입니다. 그러나 스레드를 제어 할 수는 없습니다.

이 시점에서 스레드 수에 관계없이 스레드 프로필을 작동 시키려고합니다. 나는 매닝 (Manning) 서적 의 최신 버전에서 정확히 쓰레딩 프로파일을 추가했는데, Mule은이라는 뮬을 가지고 있지만, 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은 이것을 허용하지만 서비스는 더 이상 반환하지 않습니다. 클라이언트는 단순히 응답을 기다리는 응답을 보냅니다.

풀에서 스레드 풀 크기를 제어하고 한 번만 풀에서 사용할 수 있도록 흐름을 구성하려면 어떻게해야합니까?

+0

좀 더이 문제를 파고, 설정 해당 MaxBufferSize가 구성 할 수있는 두 번째 시도에서 실패를 일으키는 것으로 보인다. 해당 특성을 제거하면 서비스가 반환됩니다. 그러나 기본값은 0이므로이 값으로 살 수는 없습니다. – Tad

답변

3

당신은 HTTP 커넥터의 receiver-threading-profile을 구성해야합니다

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

답변 해 주셔서 감사합니다. 부수적으로 default-threading-profile에서 maxBufferSize 속성을 사용하면 서비스가 중단되는 이유는 무엇입니까? – Tad

+0

어떤 가치가 있습니까? –

+0

10, 100 및 1000을 시도했습니다. – Tad

관련 문제