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 generic RouteBuilder 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 로 범위가 지정된 프로토타입을 포함할 수 있습니다.