Camel 개발을 시작하기 전에
Apache Camel 개발에 필요한 사전 준비 사항은 다음과 같습니다.
- Java 11 이상 (Java 17 권장)
- Maven 또는 Gradle 빌드 도구
- IDE (IntelliJ IDEA 또는 Eclipse 권장)
Maven 프로젝트 설정
Spring Boot와 함께 Camel을 사용하는 것이 가장 일반적인 방법입니다. pom.xml에 다음 의존성을 추가합니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
첫 번째 라우트 작성
Camel에서 라우트는 RouteBuilder를 상속받아 configure() 메서드 안에 정의합니다.
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class MyFirstRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:hello?period=3000")
.log("Camel이 실행 중입니다! 현재 시각: ${date:now:HH:mm:ss}")
.setBody(simple("Hello from Camel!"))
.to("log:output");
}
}
이 라우트는 3초마다 타이머가 작동하면서 로그를 출력합니다. from()이 시작점(소비자), to()가 끝점(생산자)입니다.
실행 결과 이해하기
애플리케이션을 실행하면 콘솔에 다음과 같은 출력이 반복됩니다.
INFO hello - Camel이 실행 중입니다! 현재 시각: 09:15:32
INFO output - Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello from Camel!]
라우트의 기본 구조 이해
Camel 라우트는 항상 from → 처리 단계들 → to 구조를 따릅니다.
- from: 메시지를 어디서 받을지 (소비자 엔드포인트)
- 처리 단계: log, transform, filter, route 등의 프로세서
- to: 처리된 메시지를 어디로 보낼지 (생산자 엔드포인트)
CamelContext – Camel의 심장
모든 Camel 라우트는 CamelContext 안에서 실행됩니다. Spring Boot 환경에서는 자동으로 생성되고 관리됩니다. CamelContext는 라우트의 생명주기를 관리하며, 시작/중지/일시정지를 제어합니다.
다음 글에서는 Camel의 핵심 메시지 모델인 Message와 Exchange에 대해 자세히 알아봅니다.