318.2. Camel 스키마 추가


Camel 1.x의 경우 다음 네임스페이스를 사용해야 합니다.

http://activemq.apache.org/camel/schema/spring

다음과 같은 스키마 위치입니다.

http://activemq.apache.org/camel/schema/spring/camel-spring.xsd

schemaLocation 선언에 Camel을 추가해야 합니다.

http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd

XML 파일은 다음과 같습니다.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

318.2.1. camel 사용: namespace

또는 XML 선언에서 camel XSD를 참조할 수 있습니다.

xmlns:camel="http://camel.apache.org/schema/spring"
  1. 따라서 선언은 다음과 같습니다.
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
  1. 그리고 camel: namespace 접두사를 사용하여 인라인 네임스페이스 선언을 생략할 수 있습니다.
<camel:camelContext id="camel5">
  <camel:package>org.apache.camel.spring.example</camel:package>
</camel:camelContext>

318.2.2. Spring을 사용한 고급 구성

Spring을 사용한 CamelContext의 고급 구성에서자세한 내용을 참조하십시오.

# Java Code 사용

Java 코드를 사용하여 RouteBuilder 구현을 정의할 수 있습니다. 이들은 봄에 빈으로 정의 한 다음 카멜 컨텍스트 (예:)에서 참조 할 수 있습니다.

318.2.3. <package> 사용

Camel은 지정된 패키지에서 자동으로 경로를 검색하고 초기화할 수 있는 강력한 기능도 제공합니다. 이는 Spring 컨텍스트 정의에서 카멜 컨텍스트 정의에 태그를 추가하여 RouteBuilder 구현을 재귀적으로 검색할 패키지를 지정하여 구성됩니다. 1.X에서 이 기능을 사용하려면 검색해야 하는 쉼표로 구분된 패키지 목록을 지정하는 <package></package> 태그가 필요합니다.

  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <package>org.apache.camel.spring.config.scan.route</package>
  </camelContext>

WARNING: 패키지 이름을 org.apache.camel 또는 이 패키지의 하위 패키지로 지정할 때는 주의해야 합니다. 이로 인해 Camel에서 해당 경로에 대한 자체 패키지를 검색하여 문제가 발생할 수 있습니다.

INFO:*이 이미 인스턴스화된 클래스*를 무시합니다. <package> 및 <packageScan>은 Spring에 의해 이미 생성된 클래스를 건너뜁니다. 따라서 경로 빌더를 Spring 8080 태그로 정의하면 해당 클래스를 건너뜁니다. < routeBuilder ref="theBeanId"/ > 또는 < contextScan > 기능을 사용하는 빈을 포함할 수 있습니다.

318.2.4. <packageScan> 사용

Camel 2.0에서는 경로 일치와 같은 Cryostat를 사용하여 검색된 경로 클래스를 선택적으로 포함 및 제외할 수 있도록 확장되었습니다. Spring에서는 <packageScan/> 태그를 추가하여 지정됩니다. 태그는 하나 이상의 '패키지' 요소(예: 1.x와 유사)를 포함해야 하며 선택적으로 검색된 클래스의 정규화된 이름에 적용할 패턴을 지정하는 하나 이상의 'includes' 또는 'excludes' 요소가 포함되어야 합니다.

  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <packageScan>
      <package>org.example.routes</package>
      <excludes>**.*Excluded*</excludes>
      <includes>**.*</includes>
    </packageScan>
  </camelContext>

포함 패턴 전에 제외 패턴이 적용됩니다. 포함 또는 제외 패턴이 정의되지 않은 경우 패키지에서 발견된 모든 경로 클래스가 반환됩니다.

위의 예에서 camel은 모든 'org.example.routes' 패키지 및 RouteBuilder 클래스의 하위 패키지를 검사합니다. 검사에서 org.example.routes에서 'MyRoute'라는 두 개의 RouteBuilders를 찾고 하위 패키지 'excludedRoute'에서 또 다른 'MyExcludedRoute'를 찾습니다. 각 클래스의 정규화된 이름은 (org.example.routes.MyRoute, org.example.routes.excluded.MyExcludedRoute) 및 include 및 exclude 패턴이 적용됩니다.

제외 패턴 *.*Excluded 는 fqcn 'org.example.routes.excluded.MyExcludedRoute' 및 veto camel from initializing과 일치합니다.

본 문서에서는 다음과 같은 Spring의 Cryo statPatternMatcher 구현을 사용하고 있습니다.

? matches one character
* matches zero or more characters
** matches zero or more segments of a fully qualified name

예를 들면 다음과 같습니다.

*.* excluded는 org.simple.Excluded, org.apache.camel.SomeExcludedRoute 또는 org.example.RouteWhichIsExcludeded와 일치합니다.

*.?? 제외됨 org.simple.IncludedRoute, org.simple.ExcludedRoute와 일치하지만 org.simple.PrecludedRoute와 일치하지 않습니다.

318.2.5. contextScan 사용

Camel 2.4부터 사용 가능

Camel에서 컨테이너 컨텍스트(예: 라우팅 빌더 인스턴스에 대한 Spring ApplicationContext )를 스캔하도록 허용할 수 있습니다. 이를 통해 Spring < component-scan > 기능을 사용할 수 있으며 Camel에서 스캔 프로세스에서 Spring에 의해 생성된 RouteBuilder 인스턴스를 선택할 수 있습니다.

이를 통해 Spring @Component 를 사용하여 경로에 주석을 달고 Camel에서 해당 경로를 포함할 수 있습니다.

@Component
public class MyRoute extends SpringRouteBuilder {

    @Override
    public void configure() throws Exception {
        from("direct:start").to("mock:result");
    }
}

< packageScan> 설명서에서 위에서 언급한 것처럼 ANT 스타일을 포함 및 제외할 수도 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.