59.11. Camel XML 구성 가져오기
Camel 2.18에서 사용 가능
CDI는 형식이 안전한 종속성 주입 메커니즘을 선호하지만 기존 Camel XML 구성 파일을 Camel CDI 애플리케이션으로 재사용하는 것이 유용할 수 있습니다. 다른 사용 사례에서는 Camel XML DSL을 사용하여 Camel 컨텍스트를 구성하는 것이 편리할 수 있습니다.
CDI 빈에서 Camel CDI가 제공하는 @ImportResource 주석을 사용할 수 있으며 Camel CDI는 다음과 같이 지정된 위치에 Camel XML 구성을 자동으로 로드합니다.
@ImportResource("camel-context.xml")
class MyBean {
}Camel CDI는 classpath에서 지정된 위치에 리소스를 로드합니다(다른 프로토콜도 나중에 추가할 수 있음).
가져온 리소스의 모든 CamelContext 요소 및 기타 Camel 프리미티브 는 컨테이너 부트스트랩 중에 CDI 빈으로 자동 배포되므로 Camel CDI에서 제공하는 자동 구성을 활용하고 런타임에 주입할 수 있습니다. 이러한 요소에 명시적 id 속성이 설정된 경우 다음 Camel XML 구성이 제공됨과 같이 @Named 한정자를 사용하여 해당 CDI 빈이 정규화됩니다.
<camelContext id="foo">
<endpoint id="bar" uri="seda:inbound">
<property key="queue" value="#queue"/>
<property key="concurrentConsumers" value="10"/>
</endpoint>
<camelContext/>해당 CDI 빈은 자동으로 배포되며 다음과 같이 삽입할 수 있습니다.
@Inject
@ContextName("foo")
CamelContext context;
@Inject
@Named("bar")
Endpoint endpoint;
CamelContext 빈은 @Named 및 @ContextName 한정자를 모두 사용하여 자동으로 정규화됩니다. 가져온 CamelContext 요소에 id 속성이 없는 경우 해당 빈은 기본 제공 @Default 한정자와 함께 배포됩니다.
반대로 애플리케이션에 배포된 CDI 빈은 일반적으로 ref 특성(예: 다음 빈이 선언된 경우) Camel XML 구성에서 참조할 수 있습니다.
@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");가져온 Camel XML 구성에서 해당 빈에 대한 참조를 선언할 수 있습니다. 예를 들면 다음과 같습니다.
<camelContext id="foo">
<route>
<from uri="..."/>
<process ref="baz"/>
</route>
<camelContext/>