4장. 설정
Camel Quarkus는 Quarkus 애플리케이션 라이프사이클에 따라 기본적으로 시작/중지되는 Camel 컨텍스트 빈을 자동으로 구성하고 배포합니다. 구성 단계는 Quarkus의 보강 단계에서 빌드 시 수행되며 Camel Quarkus 특정 quarkus.camel.* 속성을 사용하여 조정할 수 있는 Camel Quarkus 확장에 의해 구동됩니다.
Quarkus.camel.* 구성 속성은 개별 확장 페이지에 문서화되어 있습니다. 예를 들면 Camel Quarkus Core 를 참조하십시오.
구성이 완료되면 RUNTIME_INIT 단계에서 최소한의 Camel 런타임이 어셈블되어 시작됩니다.
4.1. Camel 구성 요소 구성 링크 복사링크가 클립보드에 복사되었습니다!
4.1.1. application.properties 링크 복사링크가 클립보드에 복사되었습니다!
속성을 통해 Apache Camel의 구성 요소 및 기타 측면을 구성하려면 애플리케이션이 camel-quarkus-core 직접 또는 전송에 따라 달라지도록 합니다. 대부분의 Camel Quarkus 확장은 camel-quarkus-core 에 따라 다르기 때문에 일반적으로 명시적으로 추가할 필요가 없습니다.
Camel-quarkus-core 는 Camel Main에서 Camel Quarkus까지 기능을 제공합니다.
아래 예제에서는 LogComponent 에서 application.properties 를 통해 특정 ExchangeFormatter 구성을 설정합니다.
camel.component.log.exchange-formatter = #class:org.apache.camel.support.processor.DefaultExchangeFormatter
camel.component.log.exchange-formatter.show-exchange-pattern = false
camel.component.log.exchange-formatter.show-body-type = false
4.1.2. CDI 링크 복사링크가 클립보드에 복사되었습니다!
CDI를 사용하여 프로그래밍 방식으로 구성 요소를 구성할 수도 있습니다.
권장되는 방법은 ComponentAddEvent 를 관찰하고 경로 및 CamelContext 가 시작되기 전에 구성 요소를 구성하는 것입니다.
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import org.apache.camel.quarkus.core.events.ComponentAddEvent;
import org.apache.camel.component.log.LogComponent;
import org.apache.camel.support.processor.DefaultExchangeFormatter;
@ApplicationScoped
public static class EventHandler {
public void onComponentAdd(@Observes ComponentAddEvent event) {
if (event.getComponent() instanceof LogComponent) {
/* Perform some custom configuration of the component */
LogComponent logComponent = ((LogComponent) event.getComponent());
DefaultExchangeFormatter formatter = new DefaultExchangeFormatter();
formatter.setShowExchangePattern(false);
formatter.setShowBodyType(false);
logComponent.setExchangeFormatter(formatter);
}
}
}
4.1.2.1. @Named 구성 요소 인스턴스 생성 링크 복사링크가 클립보드에 복사되었습니다!
또는 @Named 생산자 메서드에서 직접 구성 요소를 만들고 구성할 수 있습니다. Camel은 구성 요소 URI 스키마를 사용하여 레지스트리에서 구성 요소를 조회하는 방식으로 작동합니다. 예를 들어 LogComponent Camel의 경우 console이라는 로그를 찾습니다.
@Named 구성 요소를 생성하는 동안 일반적으로 작동하지만 일부 구성 요소에는 미묘한 문제가 발생할 수 있습니다.
Camel Quarkus 확장에서는 다음 중 하나를 수행할 수 있습니다.
- 기본 Camel 구성 요소 유형의 사용자 지정 하위 유형을 전달합니다. Vert.x WebSocket 확장 예제를 참조하십시오.
- 구성 요소의 일부 Quarkus별 사용자 지정을 수행합니다. JPA 확장 예제를 참조하십시오.
이러한 작업은 자체 구성 요소 인스턴스를 생성할 때 수행되지 않으므로 관찰자 방법에서 구성 요소를 구성하는 것이 권장되는 방법입니다.
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import org.apache.camel.component.log.LogComponent;
import org.apache.camel.support.processor.DefaultExchangeFormatter;
@ApplicationScoped
public class Configurations {
/**
* Produces a {@link LogComponent} instance with a custom exchange formatter set-up.
*/
@Named("log")
LogComponent log() {
DefaultExchangeFormatter formatter = new DefaultExchangeFormatter();
formatter.setShowExchangePattern(false);
formatter.setShowBodyType(false);
LogComponent component = new LogComponent();
component.setExchangeFormatter(formatter);
return component;
}
}
- 1
- 메서드 이름이 동일한 경우
@Named주석의"log"인수를 생략할 수 있습니다.