60.11. Camel XML 구성 가져오기
Camel 2.18로 사용 가능
CDI는 typesafe 종속성 주입 메커니즘을 선호하지만 기존 Camel XML 구성 파일을 Camel CDI 애플리케이션으로 재사용하는 것이 유용할 수 있습니다. 기타 사용 사례에서는 Camel XML DSL을 사용하여 Camel 컨텍스트를 구성하는 것이 편리합니다.
CDI 빈 및 Camel CDI에서 Camel CDI에서 제공하는 @ImportResource 주석을 사용하면 지정된 위치에서 Camel XML 구성을 자동으로 로드할 수 있습니다. 예를 들면 다음과 같습니다.
@ImportResource("camel-context.xml")
class MyBean {
}
Camel CDI는 classpath에서 지정된 위치에 있는 리소스를 로드합니다(다른 프로토콜이 나중에 추가될 수 있음).
가져온 리소스의 모든 CamelContext 요소 및 기타 Camel 프리미티브 는 컨테이너 부트스트랩 중에 CDI 빈으로 자동으로 배포되므로 Camel CDI에서 제공하는 자동 구성의 이점을 얻고 런타임 시 삽입할 수 있습니다. 이러한 요소에 명시적 id 속성이 설정된 경우 다음 Camel XML 구성이 지정된 경우 해당 CDIMeshMemberRoll은 @Named 한정자를 사용하여 평가됩니다.
<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 속성이 없는 경우 해당 8080은 기본 제공 @Default 한정자를 사용하여 배포됩니다.
반대로, 애플리케이션에 배포된 CDI 빈은 Camel XML 구성에서 참조할 수 있으며, 일반적으로 ref 특성을 사용하여 다음과 같이 선언되어 있습니다.
@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");
빈에 대한 참조는 가져온 Camel XML 구성에서 선언할 수 있습니다. 예를 들면 다음과 같습니다.
<camelContext id="foo">
<route>
<from uri="..."/>
<process ref="baz"/>
</route>
<camelContext/>