Jay's Blog

Apache Camel
정의 및 사용법

Apache Camel

Route

루트는 어디에서 어디로 갈지를 정의한 시스템간의 인터페이스이다. 1 on 1 or 1 on N의 관계로도 정의할 수 있다.

루트는 크게 Component와 Processor로 정의된다.

End point

myCamelContext.getEndpoint("pop3://john.smith@mailserv.example.com?password=myPassword");

Component

route의 from to에서 각각의 받는 곳과 주는 곳의 uri를 end point라고 정의한다. 각각의 uri를 카멜과 연결할 때, 각각의 프로토콜에 맞는 컴포넌트의 인스턴스를 생성 해야한다. 예를 들어, FTP라면 FTP 컴포넌트, JDBC라면 JDBC 컴포넌트, ActiveMQ라면 JMS프로토콜을 정의해 주어야 한다. 컴포넌트는 연결된 uri를 각각의 프로토콜에 맞춰 데이터를 전송할 수 있게 한다. Each invocation of JmsComponent.createEndpoint() creates an instance of the JmsEndpoint class

Component mailComponent = new org.apache.camel.component.mail.MailComponent();
myCamelContext.addComponent("pop3", mailComponent);
myCamelContext.addComponent("imap", mailComponent);
myCamelContext.addComponent("smtp", mailComponent);

Processor

from에서 받은 데이터를 to로 보낼 때, 거의 대부분 로그를 남기는 등의 로직이 필요하다. 일부 비즈니스 로직을 실행하기 위해서 프로세서를 사용한다. 1. message format transformation - 메세지의 포맷을 변경(Json to XML, XML to Json) 2. Routing -

there are many classes in the Camel library that implement the Processor interface in a way that provides support for a design pattern in the EIP book. For example, ChoiceProcessor implements the message router pattern, that is, it uses a cascading if-then-else statement to route a message from an input queue to one of several output queues. Another example is the FilterProcessor class which discards messages that do not satisfy a stated predicate (that is, condition).

*****
Written by Jay on 18 January 2018