Apache Camel-Spring과 함께 사용
이제 Spring을 사용하여 이전 장에서 응용 프로그램을 다시 만들 것입니다. 이것은 DSL이 아닌 XML로 Camel 라우팅을 만드는 방법에 대한 아이디어를 제공합니다.
새 프로젝트 생성
새로 만들기 Maven 프로젝트를 지정하고 다음을 지정하십시오-
GroupId: BasketWithSpring
ArtifactId: BasketWithSpring
프로젝트의 기본 위치를 선택하거나 원하는 경우 원하는 디렉토리를 지정하십시오.
종속성 추가
이전 애플리케이션에서 사용한 핵심 종속성 외에도 Spring을 사용하려면 몇 가지 종속성을 더 추가해야합니다. 종속성은 pom.xml에 추가됩니다. 이제 pom.xml을 열고 다음 종속성을 추가하십시오.
<dependencies>
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.2</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>2.15.1</version>
</dependency>
</dependencies>
Spring 용 Java DSL 생성
이제 새로운 Java 클래스를 생성하겠습니다. DistributeOrderXML. 그것에 다음 코드를 추가하십시오-
public class DistributeOrderXML {
public static void main(String[] args) throws Exception {
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"SpringRouteContext.xml");
CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
try {
camelContext.start();
ProducerTemplate orderProducerTemplate = camelContext.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
orderProducerTemplate.sendBody("direct:DistributeOrderXML", orderInputStream);
} finally {
camelContext.stop();
}
}
}
에서 main 메서드, 먼저 인스턴스를 만듭니다. ApplicationContext, 이는 Spring 애플리케이션 내의 중앙 인터페이스입니다. 생성자에서 라우팅 및 필터링 정보가 포함 된 XML 파일의 이름을 지정합니다.
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"SpringRouteContext.xml");
다음으로 우리는 CamelContext 위에서 만든 지정 ApplicationContext 매개 변수에서.
CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
이 시점에서 라우팅 및 필터링이 설정됩니다. 따라서 우리는CamelContext 그것의 사용 start방법. 이전의 경우와 마찬가지로 order.xml 파일을로드하기위한 Endpoint를 정의하고 처리를 시작합니다. 이제 라우팅이 XML에서 어떻게 정의되는지 이해하겠습니다.
애플리케이션 컨텍스트 생성
프로젝트에 새 XML 파일을 추가하고 호출하십시오. SpringRouteContext.xml. 다음 내용을 잘라내어이 파일에 붙여 넣습니다.
<?xml version = "1.0" encoding = "UTF-8"?>
<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 ">
<camelContext xmlns = "http://camel.apache.org/schema/spring">
<route>
<from uri = "direct:DistributeOrderXML"/>
<log message = "Split by Distribute Order"/>
<split>
<xpath>//order[@product = 'Oil']/items</xpath>
<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>
</split>
</route>
</camelContext>
</beans>
여기에서 xpath 쿼리를 다음과 같이 정의합니다. 이제 "oil"에 대한 모든 주문을 선택합니다.
<xpath>//order[@product = 'Oil']/items</xpath>
출력 끝점은 여러 개입니다. 첫 번째 끝점은order 두 번째 폴더는 콘솔을 지정합니다.
<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>
응용 프로그램을 실행하십시오.
시험 결과
응용 프로그램을 실행하면 화면에 다음 출력이 표시됩니다.
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
확인 order사용자가 지정한 경로의 폴더. 위의 XML 코드를 포함하는 새로 생성 된 파일을 찾을 수 있습니다.
결론
Camel은 통합 프로젝트를 용이하게하기 위해 EIP를 구현하는 즉시 사용 가능한 프레임 워크를 제공합니다. 도메인 별 언어 코딩과 XML 사용을 지원합니다.