JBoss 퓨즈-Apache Camel
이 장에서는 몇 가지 예와 함께 Apache Camel이 무엇이며 어떻게 엔드 포인트간에 데이터를 효과적으로 라우팅하는지 설명합니다.
Apache Camel이란 무엇입니까?
Apache Camel은 2007 년 초에 시작된 오픈 소스 통합 프레임 워크입니다.
EIP (Enterprise Integration Pattern) 기반 접근 방식으로 엔터프라이즈 통합 문제를 해결하는 데 사용할 수있는 몇 가지 기본 패턴 구현을 제공합니다. EIP는 기업 통합에서 잘 문서화되고 반복되는 문제에 대한 입증 된 솔루션 일뿐입니다.
Camel은 데이터 형식 변환, 엔드 포인트 연결 등과 같은 많은 부하를 감수하면서 엔드 포인트간에 데이터를 효과적으로 라우팅하기 때문에 라우팅 및 중재 엔진이라고도합니다.
기본 예
Apache Camel을 사용하기위한 전제 조건은 다음과 같습니다.
- Java
- Maven
- Redhat JBoss 퓨즈 6.1-GA-379
애플리케이션의 기본 스켈레톤 생성
mvn:archetype generate
–DgroupId = com.tutorialpoint.app
–DartifactId = camel-first-app
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring
–DinteractiveMode = false -X
이렇게하면 다음 디렉터리 구조가 생성됩니다.
이것은 생성되는 Camel 애플리케이션의 기본 골격입니다.
camel-context.xml 편집
편집하다 camel-first-app → src → main → resources → META-INF\spring\camel-context.xml은 아래와 같이 일치합니다.
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<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">
<!-- here is a sample which processes the input file
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri = "file:///d:/src/data?noop=false"/>
<choice>
<when>
<xpath>/person/city = 'London'</xpath>
<log message = "UK message"/>
<to uri = "file:///d:/target/messages/uk"/>
</when>
<otherwise>
<log message = "Other message"/>
<to uri = "file:///d:/target/messages/others"/>
</otherwise>
</choice>
</route>
</camelContext>
</beans>
pom.xml 편집
<plugins> </ plugins> 안에 다음 코드를 추가합니다.
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>
${project.artifactId}
</Bundle-SymbolicName>
<Import-Package>*</Import-Package>
</instructions>
</configuration>
</plugin>
포장 유형 변경 jar → bundle.
<packaging>bundle</packaging>
다음 명령을 사용하여 프로젝트를 빌드하십시오-
mvn clean install
Fuse에 프로젝트 설치
다음을 사용하여 퓨즈 시작 Fuse.bat/start.bat. 다음을 사용하여 퓨즈를 시작하는 경우start.bat, 사용하다 client.bat퓨즈에 연결합니다. 다음 스크린 샷과 같이 UI를 가져와야합니다.
Karaf 및 Fuse 명령에 액세스하기위한 CLI입니다.
install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT
프로젝트가 실행 중인지 테스트
이제 애플리케이션이 Fuse에 설치되어야합니다. 내부 데이터 디렉토리 복사camel-first-app 그리고 그것을 D:/src/ 그리고 city = London을 갖는 메시지를 D:/target/merssages/uk.
입력 파일을 D:/src/data
Input
Message1.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
<firstName>James</firstName>
<lastName>Strachan</lastName>
<city>London</city>
</person>
Message2.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
<firstName>Hiram</firstName>
<lastName>Chirino</lastName>
<city>Tampa</city>
</person>
Output
D : / target / messages / uk에서
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
<firstName>James</firstName>
<lastName>Strachan</lastName>
<city>London</city>
</person>
D : / target / messages / others에서
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
<firstName>Hiram</firstName>
<lastName>Chirino</lastName>
<city>Tampa</city>
</person>