1장. 경로 정의용 블록 빌드
초록
Apache Camel은 경로를 정의하는 데 필요한 두 가지 대체 DSL( Domain Specific Languages )을 지원합니다(Java DSL 및 Spring XML DSL). 경로를 정의하는 기본 빌딩 블록은 끝점 및 프로세서이며, 프로세서 의 동작은 일반적으로 표현식 또는 논리 서술자 에 의해 수정됩니다. Apache Camel을 사용하면 다양한 언어를 사용하여 표현식 및 서술자를 정의할 수 있습니다.
1.1. RouteBuilder 클래스 구현
1.1.1. 개요
DSL( Domain Specific Language )을 사용하려면 RouteBuilder
클래스를 확장하고 라우팅 규칙을 정의하는 configure()
메서드를 재정의합니다.
필요한 만큼 RouteBuilder
클래스를 정의할 수 있습니다. 각 클래스는 한 번 인스턴스화되며 CamelContext
오브젝트에 등록됩니다. 일반적으로 각 RouteBuilder
오브젝트의 라이프사이클은 라우터를 배포하는 컨테이너에서 자동으로 관리합니다.
1.1.2. RouteBuilder 클래스
라우터 개발자로서 핵심 작업은 RouteBuilder
클래스를 하나 이상 구현하는 것입니다. 다음 두 가지 대체 RouteBuilder
클래스가 있습니다.
-
org.apache.camel.builder.RouteBuilder
Cryostat-ECDHE This is the genericRouteBuilder
base class that is suitable for deploying into any container type.camel-core
아티팩트로 제공됩니다. -
org.apache.camel.spring.SpringRouteBuilder
Cryostat 이 기본 클래스는 Spring 컨테이너에 특별히 조정됩니다. 특히 다음의 Spring 특정 기능에 대한 추가 지원을 제공합니다. Spring 레지스트리에서빈을 조회합니다(JustRef()
Java DSL 명령 사용) 및 트랜잭션(자세한 내용은 트랜잭션 가이드 참조). 이는camel-spring
아티팩트로 제공됩니다.
RouteBuilder
클래스는 라우팅 규칙을 시작하는 데 사용되는 메서드를 정의합니다(예: from()
, intercept()
, exception()
).
1.1.3. RouteBuilder 구현
예 1.1. “RouteBuilder 클래스 구현” 최소 RouteBuilder
구현을 표시합니다. configure()
메서드 본문에는 라우팅 규칙이 포함되어 있으며 각 규칙은 단일 Java 문입니다.
예 1.1. RouteBuilder 클래스 구현
import org.apache.camel.builder.RouteBuilder; public class MyRouteBuilder extends RouteBuilder { public void configure() { // Define routing rules here: from("file:src/data?noop=true").to("file:target/messages"); // More rules can be included, in you like. // ... } }
의 규칙 형식 (URL1).to(URL2)
은 디렉토리 src/data
에서 파일을 읽고 디렉터리 target/messages
디렉터리에 전송하도록 라우터에 지시합니다. 옵션 ?noop=true
는 라우터가 src/data
디렉토리에 있는 소스 파일을 유지(삭제하지 않음)하도록 지시합니다.
contextScan
을 Spring 또는 블루프린트와 함께 사용하여 RouteBuilder
클래스를 필터링하면 기본적으로 Apache Camel에서 Singleton 빈을 찾습니다. 그러나 이전 동작을 켜서 새 옵션 includeNonSingletons
로 범위가 지정된 프로토타입을 포함할 수 있습니다.