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>