2013-09-05 4 views
3

이 예제를 보자Seda 큐의 성능을 어떻게 향상시킬 수 있습니까?

from("seda:data").log("data added to queue") 
        .setHeader("CamelHttpMethod", constant("POST")) 
        .setHeader(Exchange.CONTENT_TYPE, constant("application/json")) 
        .process(new Processor() { 
         public void process(Exchange exchange) throws Exception { 
           exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8"); 
         } 
        }) 
        .recipientList(header(RECIPIENT_LIST)) 
        .ignoreInvalidEndpoints().parallelProcessing(); 

는 RECIPENT_LIST 헤더는 하나의 HTTP 엔드 포인트 포함한다고 가정 해 봅시다. 주어진 http 엔드 포인트의 경우, 메시지는 순서대로 처리되어야하지만, 다른 엔드 포인트에 대한 두 개의 메시지를 병렬로 처리 할 수 ​​있습니다.

기본적으로 성능 향상을 위해 수행 할 작업이 있는지 알고 싶습니다. 예를 들어, concurrentConsumers가 도움이 될까요?

답변

6

concurrentConsumers> 1 인 SEDA는 다중 스레드가 병렬로 실행될 수 있기 때문에 처리량에 절대적으로 도움이되지만 ... 단일 스레드 만 주어진 http를 치는 지 확인하기 위해 자체 잠금 메커니즘을 구현해야합니다 당신이 JMS를 사용하는 경우, 다음 사용하기 위해 사소한으로 ActiveMQ message groups 사용을 고려 짧은 http://camel.apache.org/parallel-processing-and-ordering.html

정확히이 사용 사례를 위해 설계되었습니다 : 주어진 시간, 그렇지 않으면

에서 엔드 포인트는 여기에 옵션의 개요입니다 (병렬 처리이지만 메시지 그룹별로 단일 스레드).

관련 문제