2017-11-16 7 views
0

애플리케이션 정보 : 아래JbossFuse (v6.3) DSL 경로 코드의 성능을 어떻게 향상시킬 수 있습니까?

코드 : IBM MQ 큐에서 읽고 다음 REST 서비스에 메시지를 게시

(참고 다음 MQ 큐에서 읽기가 빠르고 및 하지 문제 - 다소 불완전한 점은 게시물 운영 성능 향상입니다.)

문제 : 출력

수 없습니다/초 이상의 44-47 메시지를 ... 게시

질문 :

가 어떻게이 JbossFuse의 성능을 향상시킬 수 있습니다 (v6.3) 아래의 DSL 경로 코드 ... ... (어떤 기술을 더 빠르게 사용할 수 있습니까?)

package aaa.bbb.ccc; 

import org.apache.camel.Exchange; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.cdi.ContextName; 

@ContextName("rest-dsl") 
public class Netty4HttpSlowRoutes extends RouteBuilder { 

    public Netty4HttpSlowRoutes() { 
    } 

    private final org.apache.camel.Processor proc1 = new Processor1();  

    @Override 
    public void configure() throws Exception { 

    org.apache.log4j.MDC.put("app.name", "netty4HttpSlow"); 

    System.getProperties().list(System.out); 
    errorHandler(defaultErrorHandler().maximumRedeliveries(3).log("***FAILED_MESSAGE***")); 

    from("wmq:queue:mylocalqueue") 
     .log("inMessage=" + (null==body()?"":body().toString())) 
     .to("seda:node1?concurrentConsumers=20"); 

    from("seda:node1") 
     .streamCaching() 
     .threads(20) 
     .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST)) 
     .setHeader(Exchange.CONTENT_TYPE, constant("application/json")) 
     .toD("netty4-http:http://localhost:7001/MyService/myServiceThing?textline\\=true");  
    }   
} 
+0

MQ의 메시지를 읽거나 REST 서비스에 메시지를 게시하는 것과 관련이 있습니까? – JoshMc

+0

나머지 서비스에 게시. mq 읽기가 빠릅니다. – sairn

+0

저는 MQ Admin이므로 REST 서비스가 끝나면 조언을 구하지 못합니다. – JoshMc

답변

0

몇 가지 생각. 가장 먼저 할 일 : 천천히 측정 했습니까? Camel VS에서 HTTP 요청을 보내는 데 소비하는 시간은 얼마나됩니까?
REST 서비스가 느린 경우 Camel에서 할 수있는 일이 없습니다. 서비스의 기능에 따라 스레드 수를 줄여보십시오.

사용하지 않는 것처럼 보이기 때문에 streamCaching을 사용하지 않도록 설정하십시오.

그런 다음 toD 대신 to을 사용하여 서비스를 호출하면 URL이 항상 동일하다는 것을 알 수 있습니다. docs of ToD에서 읽음

기본적으로 단순 언어는 끝점을 계산하는 데 사용됩니다.

경로를 호출 할 때마다 URI 문자열을 구문 분석하는 동안 약간의 오버 헤드가있을 수 있습니다.

+0

안녕하세요 Alessandro - 저는 JBoss Fuse, 낙타 청사진을 처음 사용합니다. - 실제 코드의 거친 모델을 게시하여 system.properties를 사용하여 URL 값을 얻습니다. 따라서 "ToD". 원본 코드에는 "streamCaching"이 도움이 될 것이라고 생각했던 "process()"메서드도 있습니다 (?). 대기열이 매우 빨리 소모됩니다. "병목 현상"은 REST 게시 요청 (?)에 초점을 맞추고있는 것으로 보입니다. REST 요청을 "스프레이"하는 방법이 있을지 궁금한가요? 질문 : 성능면에서 camel-netty4-http가 올바른 선택입니까? (다시, 나는 낙타 청사진을 사용하고있다). 고마워! – sairn