[Camel in Action] 1-2. Camel 개발 환경 설정과 첫 번째 라우트 작성

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에 대해 자세히 알아봅니다.

Leave a Comment