Apache Camel-구성 요소

Camel은 몇 가지 사전 제작 된 구성 요소를 제공합니다.

이 장에서는 다음과 같은 몇 가지 중요한 구성 요소에 대해 설명합니다. camel-core 기준 치수.

그만큼 Bean컴포넌트는 Bean을 Camel 메시지 교환에 바인딩합니다. 끝점을 만드는 URI는 다음과 같이 지정됩니다.bean:beanID, 어디 beanID 에 지정된 Bean의 이름입니다. Registry.

JndiContext jndiContext = new JndiContext();
jndiContext.bind("MilkOrder", new MilkOrderProcessor());
CamelContext camelContext = new DefaultCamelContext(jndiContext);

camelContext.addRoutes(new RouteBuilder() {
   public void configure() {
      from("direct:bigBasket")
         .to("bean:MilkOrder?method=placeOrder");
   }
});

엔드 포인트가 bean:실험 계획안. 호출 될 Bean 메소드를 선택적으로 지정할 수 있습니다. 이 경우 호출 된 메서드placeOrderEndpoint 표현식을 평가하는 동안 호출됩니다. 그만큼MilkOrder JNDI 이름입니다. MilkOrderProcessor코드 조각의 처음 두 줄에 등록 된 Javabean 정의MilkOrderProcessor 여기서는 간결함을 위해 생략했습니다.

곧장

당신은 Direct이전 예에서. 석유 공급 업체에 주문을 보내기 위해direct:oil끝점 사양에서. 사용Direct구성 요소를 사용하면 엔드 포인트를 동 기적으로 호출 할 수 있습니다. 이전 예제의 다음 두 코드 스 니펫은Direct

.when(header("order").isEqualTo("oil"))
   .to("direct:oil")

과,

from("direct:DistributeOrderDSL")
   .process(myProcessor);

파일

그만큼 File구성 요소는 컴퓨터의 파일 시스템에 대한 액세스를 제공합니다. 이 구성 요소를 사용하면 다른 구성 요소의 메시지를 로컬 디스크에 저장할 수 있습니다. 또한 다른 Camel 구성 요소가 로컬 파일을 처리 할 수 ​​있습니다. 둘 중 하나를 사용할 수 있습니다.file:directoryName[?options] 또는 file://directoryName[?options]파일 구성 요소를 사용하는 동안 URI 형식으로. 이전에이 구성 요소의 사용을 확인했습니다.

from ("file:/order").to("jms:orderQueue");

참고 File구성 요소는 기본적으로 디렉토리 이름을 사용합니다. 따라서 주문 디렉토리의 내용이 입력 내용으로 사용됩니다. 특정 파일을 지정하려면order 디렉토리에서 다음 문을 사용합니다.

from ("file:/order?fileName = order.xml").to("jms:orderQueue");

로그

그만큼 Log구성 요소를 사용하면 기본 로깅 메커니즘에 메시지를 로깅 할 수 있습니다. Camel은 SLF4J (Simple Logging Facade for Java)를 다양한 로깅 프레임 워크에 대한 추상화로 사용합니다. 당신은 사용할 수 있습니다java.util.logging, logback, log4j로깅을 위해. 이 코드 스 니펫은Log 성분-

from("direct:DistributeOrderDSL")
   .to("bean:MilkOrder?method = placeOrder")
   .to("log:com.example.com?level = INFO&showBody = true");

SEDA

그만큼 SEDA 구성 요소를 사용하면 동일한 CamelContext. CamelContext 인스턴스를 통해 호출하려면 다음을 사용해야합니다.VM구성 요소. SEDA의 사용은 다음과 같습니다.

from("direct:DistributeOrderDSL")
// send it to the seda queue that is async
   .to("seda:nextOrder")

이 경로에서는 단순히 주문을 nextOrder비동기 대기열. 이 큐를 구독 한 클라이언트는이 큐에서 메시지를 선택합니다.

시간제 노동자

그만큼 Timer구성 요소는 정기적으로 메시지를 보내는 데 사용되므로 Camel 응용 프로그램을 테스트하는 동안 매우 유용 할 수 있습니다. 여기 코드 조각은 2 초마다 콘솔에 테스트 메시지를 보냅니다.

from("timer://testTimer?period = 2000")
   .setBody()
   .simple("This is a test message ${header.timer}")
      .to("stream:out");