292장. Camel SCR(더 이상 사용되지 않음)
Camel 2.15에서 사용 가능
SCR은 Service Component Runtime의 약어이며 OSGi Declarative Services 사양의 구현입니다. SCR을 사용하면 모든 일반 Java 객체가 상용구 코드가 없는 OSGi 서비스를 노출 및 사용할 수 있습니다.
OSGi 프레임워크는 번들의 SCR 설명자 파일을 확인하여 오브젝트를 알고 있으며, 이는 일반적으로 org.apache.felix:maven-scr-plugin 와 같은 플러그인에 의해 Java 주석에서 생성됩니다.
SCR 번들에서 Camel을 실행하는 것은 Spring DM 및 Blueprint 기반 솔루션에 비해 더 적은 코드 라인을 가지고 있습니다. 번들은 Java 세계에서 완전히 유지될 수 있으므로 XML 또는 속성 파일을 편집할 필요가 없습니다. 이렇게하면 모든 것을 완벽하게 제어 할 수 있으며 선택 IDE가 프로젝트에서 진행 중인 상황을 정확히 알고 있음을 의미합니다.
292.1. Camel SCR 지원 링크 복사링크가 클립보드에 복사되었습니다!
Camel-scr 번들은 Apache Camel 버전 2.15.0에 포함되어 있지 않지만 2.12.0 이후 모든 Camel 버전에서 아티팩트를 사용할 수 있습니다.
org.apache.camel/camel-scr 번들에서는 장치 테스트에서 S CR 속성을 사용하기 위한 Camel 컨텍스트와 도우미 클래스를 관리하는 AbstractCamelRunner 기본 클래스를 제공합니다. Apache Karaf의 Camel-scr 기능은 SCR 번들에서 Camel을 실행하는 데 필요한 모든 기능 및 번들을 정의합니다.
AbstractCamelRunner 클래스는 CamelContext의 라이프사이클을 서비스 구성 요소의 라이프사이클에 연결하고 Camel의 PropertiesComponent를 사용하여 구성을 처리합니다. java 클래스에서 서비스 구성 요소를 만들기 위해 필요한 것은 AbstractCamelRunner 에서 확장하고 클래스 수준에서 다음 org.apache.felix.scr.annotations 를 추가하는 것입니다.
필요한 주석 추가
그런 다음 실행하려는 Camel 경로를 반환하는 getRouteBuilders() 메서드를 구현합니다.
Implement getRouteBuilders()
마지막으로 기본 구성을 다음과 같이 제공합니다.
주석의 기본 구성
모두입니다. 그리고 camel-archetype-scr 을 사용하여 프로젝트를 생성하는 경우 이 모든 것이 이미 처리되어 있습니다.
다음은 camel-archetype-scr에 의해 생성되는 전체 Service Component 클래스의 예입니다.
CamelScrExample.java
CamelContextId 및 활성 속성은 CamelContext의 이름(기본값: "camel-runner-default") 및 시작 여부(기본값: "false")를 각각 제어합니다. 이 외에도 원하는 수의 속성을 추가하고 사용할 수 있습니다.In addition to these you can add and use as many properties as you like. Camel의 PropertiesComponent는 재귀 속성과 문제 없이 폴백으로 접두사를 처리합니다.
AbstractCamelRunner 는 Camel의 PropertiesComponent를 통해 RouteBuilders에서 이러한 속성을 사용할 수 있도록 하며 이름이 일치하면 이러한 값을 서비스 구성 요소의 및 RouteBuilder의 필드에 삽입할 수 있습니다. 필드는 가시성 수준을 사용하여 선언할 수 있으며, 많은 유형이 지원됩니다(String, int, boolean, URL, …).
다음은 camel-archetype-scr 에서 생성된 RouteBuilder 클래스의 예입니다.
CamelScrExampleRoute.java
CamelScrExampleRoute 에 대해 자세히 살펴보겠습니다.
이러한 필드의 값은 해당 이름과 일치하여 속성 값으로 설정됩니다.
// Add a bean to Camel context registry
registry.put("test", "bean");
// Add a bean to Camel context registry
registry.put("test", "bean");
경로에 대해 CamelContext의 레지스트리에 일부 빈을 추가해야 하는 경우 다음과 같이 수행할 수 있습니다.
경로를 시작하기 전에 필수 매개 변수가 설정되었고 의미 있는 값이 있는지 확인하는 것이 좋습니다.
경로의 거의 모든 항목은 속성으로 구성됩니다. 기본적으로 RouteBuilder는 템플릿을 만듭니다. SCR을 사용하면 대체 구성을 제공하여 경로 인스턴스를 더 생성할 수 있습니다. Camel SCR 번들을 템플릿으로 사용하는 섹션의 자세한 내용.