1.2. Spring Boot
Spring Boot가 Camel을 자동으로 구성합니다. Spring 컨텍스트에서 사용 가능한 Camel 경로의 자동 구성 자동 구성 및 Camel 유틸리티(예: 생산자 템플릿, 소비자 템플릿, 유형 변환기 등)를 빈으로 등록합니다.
Maven 사용자는 이 구성 요소를 사용하려면 pom.xml
에 다음 종속성을 추가해야 합니다.
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot</artifactId> <version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version --> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
Camel-spring-boot
는 spring.factories
파일과 함께 제공되므로 해당 종속성을 클래스 경로에 추가하면 Spring Boot가 Camel을 자동으로 자동으로 설정합니다.
1.2.1. Camel Spring Boot Starter 링크 복사링크가 클립보드에 복사되었습니다!
Apache Camel은 시작자를 사용하여 Spring Boot 애플리케이션을 개발할 수 있는 Spring Boot Starter 모듈을 제공합니다. 소스 코드에도 샘플 애플리케이션이 있습니다.
시작기를 사용하려면 Spring 부팅 pom.xml 파일에 다음을 추가합니다.
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-bom</artifactId> <version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version --> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-bom</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
그런 다음 Camel 경로를 사용하여 다음과 같은 클래스를 추가할 수 있습니다.
그러면 이러한 경로가 자동으로 시작됩니다.
application.properties
또는 application.yml
파일에서 Camel 애플리케이션을 사용자 지정할 수 있습니다.
1.2.2. Spring Boot 자동 구성 링크 복사링크가 클립보드에 복사되었습니다!
Spring Boot와 함께 Spring-boot를 사용하는 경우 다음과 같은 Maven 종속성을 사용하여 자동 구성을 지원해야 합니다.
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-starter</artifactId> <version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version --> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
1.2.3. 자동 구성된 Camel 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
Camel 자동 구성에서 제공하는 가장 중요한 기능은 CamelContext
인스턴스입니다. Camel 자동 구성에서는 SpringCamelContext
를 생성하고 해당 컨텍스트의 적절한 초기화 및 종료를 처리합니다. 생성된 Camel 컨텍스트는 Spring 애플리케이션 컨텍스트( camelContext
console 이름 아래)에도 등록되므로 다른 Spring console처럼 액세스할 수 있습니다.
1.2.4. Camel 경로 자동 감지 링크 복사링크가 클립보드에 복사되었습니다!
Camel 자동 구성에서는 Spring 컨텍스트에서 모든 RouteBuilder
인스턴스를 수집하여 제공된 CamelContext
에 자동으로 삽입합니다. 즉, Spring Boot starter를 사용하여 새 Camel 경로를 생성하는 것은 @Component
주석이 달린 클래스를 classpath에 추가하는 것처럼 간단합니다.
또는 @Configuration
클래스에서 새 경로 RouteBuilder
빈을 생성합니다.
1.2.5. Camel 속성 링크 복사링크가 클립보드에 복사되었습니다!
Spring Boot 자동 구성은 Camel 속성을 지원하는 속성 자리 표시자, OS 환경 변수 또는 시스템 속성을 포함할 수 있는 Spring Boot 외부 구성에 자동으로 연결됩니다. 기본적으로 application.properties
파일에 정의된 모든 속성을 의미합니다.
route.from = jms:invoices
route.from = jms:invoices
또는 시스템 속성을 통해 설정:
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
Camel 경로에서 자리 표시자로 사용할 수 있습니다.
1.2.6. 사용자 정의 Camel 컨텍스트 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 자동 구성으로 생성된 CamelContext
console에서 일부 작업을 수행하려면 Spring 컨텍스트에서 CamelContextConfiguration
인스턴스를 등록합니다.
beforeApplicationStart
방법은 Spring 컨텍스트가 시작되기 직전에 호출되므로 이 콜백에 전달된 CamelContext
인스턴스는 완전히 자동 구성됩니다. CamelContextConfiguration
의 인스턴스를 Spring 컨텍스트에 여러 개 추가하면 각 인스턴스가 실행됩니다.
1.2.7. 자동 구성된 소비자 및 생산자 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
Camel 자동 구성에서는 사전 구성된 ConsumerTemplate
및 ProducerTemplate
인스턴스를 제공합니다. Spring 관리 빈에 삽입할 수 있습니다.
기본적으로 소비자 템플릿 및 생산자 템플릿에는 1000으로 설정된 끝점 캐시 크기가 함께 제공됩니다. 다음 Spring 속성을 수정하여 이러한 값을 변경할 수 있습니다.
camel.springboot.consumer-template-cache-size = 100 camel.springboot.producer-template-cache-size = 200
camel.springboot.consumer-template-cache-size = 100
camel.springboot.producer-template-cache-size = 200
1.2.8. 자동 구성된 TypeConverter 링크 복사링크가 클립보드에 복사되었습니다!
Camel 자동 구성에서는 Spring 컨텍스트에서 typeConverter
라는 TypeConverter
인스턴스를 등록합니다.
1.2.8.1. Spring 유형 변환 API 브리지 링크 복사링크가 클립보드에 복사되었습니다!
Spring은 강력한 유형 변환 API 와 함께 제공됩니다. Spring API는 Camel 유형 변환기 API와 유사합니다. 두 API 모두 매우 유사하므로 Camel Spring Boot는 Spring 변환 API에 위임하는 브리지 변환기(SpringTypeConverter
)를 자동으로 등록합니다. 이는 즉시 사용 가능한 Camel이 Camel과 같은 Spring gRPC를 처리하는 것을 의미합니다. 이 방법을 사용하면 Camel TypeConverter
API를 통해 액세스하는 Camel 및 Spring 변환기를 모두 사용할 수 있습니다.
Camel Spring Boot가 애플리케이션 컨텍스트에서 사용 가능한 Spring의 ConversionService
인스턴스로 변환을 위임합니다. ConversionService
인스턴스를 사용할 수 없는 경우 Camel Spring Boot 자동 구성이 자동으로 생성됩니다.
1.2.9. 애플리케이션 활성 상태 유지 링크 복사링크가 클립보드에 복사되었습니다!
이 기능을 사용할 수 있는 Camel 애플리케이션은 JVM 종료를 방지하여 애플리케이션을 활성 상태로 유지하기 위한 목적으로 시작할 때 새로운 스레드를 시작합니다. 즉, Spring Boot로 Camel 애플리케이션을 시작한 후 애플리케이션이 Ctrl+C
신호를 대기하고 즉시 종료되지 않습니다.
컨트롤러 스레드는 camel.springboot.main-run-controller
를 사용하여 true
로 활성화할 수 있습니다.
camel.springboot.main-run-controller = true
camel.springboot.main-run-controller = true
웹 모듈을 사용하는 애플리케이션(예: org.springframework.boot:spring-boot-web-starter
모듈을 가져오는 애플리케이션)은 일반적으로 다른 비daemon 스레드의 존재에 의해 유지되기 때문에 이 기능을 사용할 필요가 없습니다.
1.2.10. XML 경로 추가 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Camel XML 경로를 디렉토리 camel 아래의 classpath에 배치할 수 있습니다. 이 경로는 camel-spring-boot가 자동으로 감지되고 다음을 포함합니다. 구성 옵션을 사용하여 디렉터리 이름을 구성하거나 이 해제를 해제할 수 있습니다.
turn off
# turn off
camel.springboot.routes-include-pattern = false
scan only in the com/foo/routes classpath
# scan only in the com/foo/routes classpath
camel.springboot.routes-include-pattern = classpath:com/foo/routes/*.xml
XML 파일은 다음과 같은 Camel XML 경로(< CamelContext>
아님 )여야 합니다.
1.2.11. JUnit 5 방식으로 테스트 링크 복사링크가 클립보드에 복사되었습니다!
테스트를 위해 Maven 사용자는 pom.xml
에 다음 종속성을 추가해야 합니다.
Camel Spring Boot 애플리케이션을 테스트하려면 @CamelSpringBootTest
로 테스트 클래스에 주석을 답니다. 이를 통해 Camel의 Spring Test 지원이 애플리케이션에 적용되어 Spring Boot 테스트 규칙을 사용하여 테스트를 작성할 수 있습니다.
CamelContext
또는 ProducerTemplate
을 얻으려면 @Autowired
를 사용하여 일반 Spring 방식으로 클래스에 주입할 수 있습니다.
또한 camel-test-spring-junit5 를 사용하여 테스트를 선언적으로 구성할 수도 있습니다. 이 예에서는 @MockEndpoints
주석을 사용하여 끝점을 자동 삽입합니다.