[SPRING] 기본으로 돌아 가기 : Apache Camel 경로 및 직접 구성 요소
SPRING기본으로 돌아 가기 : Apache Camel 경로 및 직접 구성 요소
나는 낙타 경로와 그 두 끝점 인 Direct와 Seda에 대해 약간 혼란 스럽습니다. 다음과 같은 경로가 있다고 가정 해 봅시다.
public void configure()
{
from("direct:services")
.process(//Some processing here)
.to("http://ThirdPartyServers")
}
이 외에도 몇 가지 요청을 받고 일부 처리를 수행 한 다음 메시지를이 경로로 전달하여 일부 타사 서버에서 응답을 얻는 나머지 웹 서비스가 있습니다. 다음과 같이 Spring 프레임 워크를 통해 Camel Context를 인스턴스화했습니다.
<camelContext id="appCamelContext" xmlns="http://camel.apache.org/schema/spring"
trace="true" streamCache="true">
<propertyPlaceholder id="properties"
location="classpath:camel.properties" />
<camel:routeBuilder ref="oneRouteBuilder" />
<camel:routeBuilder ref="photosRouteBuilder" />
</camelContext>
이제 문제는 즉시이 경로에 여러 개의 다른 메시지를 보냅니다. 이제 Camel 문서에는 직접 구성 요소가 단일 스레드에서 호출되고 동기식이라고 말합니다. 모든 메시지가 동시에 처리됩니까? 아니면 한 번에 하나씩 처리됩니까?
또한 직접 구성 요소를 seda로 변경하면 차이가 있습니까?
티아
[Peter의 답변 이후] 업데이트 : Petter의 대답은 명확하지만 동일한 Direct 및 Seda 구성 요소에 대해 새로운 의혹이 있습니다. 내 경로는 이제 다음과 같습니다.
public void configure(){
from("direct:services")
.choice()
.when("some predicate here-Predicate1")
.to("seda:predicate1")
.otherwise()
.to("seda:fallback")
.end();
from("seda:predicate1")
.process("some processing")
.to("http://ThirdPartyServers");
from("seda:fallback")
.process("some processing")
.to("jms:fallbackqueue");
}
이제 다른 스레드에서 구성 요소로 직접 5 개의 메시지를 보내면 이러한 메시지가 동시에 처리됩니다. 위의 경로에서 볼 수 있듯이 직접 구성 요소는 메시지를 seda 구성 요소로 보냅니다. 이제 서로 다른 5 개의 메시지를 모두 처리하는 하나의 seda 구성 요소 스레드 만 있습니까? 결국 모든 메시지가 하나씩 처리됩니다.
해결법
-
==============================
1.직접 구성 요소는 호출자의 스레드에서 실행됩니다. 단순화 된 것은 일반적인 Java 메소드 호출입니다. 여러 스레드가 직접 엔드 포인트를 호출하는 한 여러 메시지가 경로를 통해 실행될 수 있습니다.
직접 구성 요소는 호출자의 스레드에서 실행됩니다. 단순화 된 것은 일반적인 Java 메소드 호출입니다. 여러 스레드가 직접 엔드 포인트를 호출하는 한 여러 메시지가 경로를 통해 실행될 수 있습니다.
SEDA (또는 VM) 엔드 포인트를 호출 할 때 메시지가 큐 (메모리)에 놓입니다. 라우트의 다른 스레드는 큐에서 메시지를 하나씩 선택하여 처리합니다. synchronizeConsumers 옵션을 설정하여 seda 소비자가 보유해야하는 스레드 수를 구성 할 수 있습니다. 기본적으로 하나의 스레드 소비 메시지는이 라우트에 생성되는 스레드 수에 관계없이 한 번에 하나의 메시지 만 처리되도록합니다.
그것은 당신의 진술로 귀결됩니다.
이것이 다른 스레드를 의미하거나 시퀀스의 단일 스레드에서만
from https://stackoverflow.com/questions/16331886/back-to-basics-apache-camel-routes-and-direct-component by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] DataTables 서버 쪽 페이지 매김 (0) | 2019.09.14 |
---|---|
[SPRING] Kafka 리스너 (spring-kafka)가 초기화되지 않은 경우에도 스프링 애플리케이션을 시작하는 방법 (0) | 2019.09.14 |
[SPRING] 스프링에서 @NumberFormat에 다른 로케일 사용 (0) | 2019.09.14 |
[SPRING] JPA 및 Spring 부트에 대한 검색 기능 구현 [닫기] (0) | 2019.09.14 |
[SPRING] Java의 SOAP 헤더에 자식 요소를 추가하는 방법 (0) | 2019.09.14 |