나는 낙타 가 정확히 무엇을하는지 이해 하지 못한다.
낙타에 대해 101 단어로 소개 할 수 있다면 :
- 정확히 무엇입니까?
- Java로 작성된 응용 프로그램과 어떻게 상호 작용합니까?
- 서버와 함께 제공되는 것입니까?
- 독립 프로그램입니까?
낙타가 무엇인지 설명하십시오.
답변
5 분에서 10 분 정도의 시간이 있다면 일반적으로 Jonathan Anstey의 Apache Camel과의 통합 을 읽는 것이 좋습니다 . Camel의 일부 개념에 대한 간략한 소개와 개요를 제공하는 잘 작성된 기사이며 코드 샘플과 함께 유스 케이스를 구현합니다. 그 안에 Jonathan은 다음과 같이 씁니다.
Apache Camel은 개발자가보다 쉽게 통합 할 수 있도록하는 오픈 소스 Java 프레임 워크입니다. 다음을 제공하여이를 수행합니다.
- 널리 사용되는 모든 EIP ( Enterprise Integration Patterns ) 의 구체적인 구현
- 다양한 전송 및 API에 대한 연결
- DSL (Domain Specific Languages)을 사용하여 EIP와 전송을 함께 연결
첫 번째 장에서 낙타를 소개하는 Camel in Action 의 무료 장도 있습니다. Jonathan은 저와 저 책의 공동 저자입니다.
답변
좀 더 접근하기 쉬운 방법으로 설명하려고합니다.
Apache Camel이 무엇인지 이해하려면 Enterprise Integration Patterns가 무엇인지 이해해야합니다.
우리가 이미 알고있는 것으로 시작해 봅시다 : 싱글 톤 패턴, 팩토리 패턴 등; 문제에 대한 솔루션을 구성하는 방법 일 뿐이지 만 솔루션 자체는 아닙니다. 이 패턴들은 그들의 책 : Design Patterns 을 출판했을 때, Gang of Four에 의해 나머지 사람들을 위해 분석되고 추출되었습니다 . 그들은 코드를 가장 잘 구성하는 방법을 생각하는 데 엄청난 노력을 아끼지 않았습니다.
많은 네의 갱처럼, 그레고르 Hohpe 바비 울프는 책을 저술 엔터프라이즈 통합 패턴 들이 제안하고 새로운 패턴의 집합 문서화하는 (EIP) 청사진 우리가 할 수 방법에 대한 최고의 디자인 대형 컴포넌트 기반 시스템, 구성 요소가 될 수있는 곳을 동일한 프로세스 또는 다른 시스템에서 실행 중입니다.
그들은 기본적으로 시스템을 메시지 지향 으로 구성 할 것을 제안합니다 . 구성 요소는 메시지를 입력 및 출력으로 사용하고 다른 것은 전혀 사용하지 않고 구성 요소가 서로 통신합니다. 전체 시스템을 구성하는 다양한 구성 요소에서 선택하고 구현할 수있는 완전한 패턴 세트를 보여줍니다.
그렇다면 Apache Camel은 무엇입니까?
Apache Camel은 EIP에 대한 인터페이스, 기본 객체, 일반적으로 필요한 구현, 디버깅 도구, 구성 시스템 및 기타 많은 헬퍼를 제공하여 EIP를 따르기 위해 솔루션을 구현할 때 많은 시간을 절약 할 수 있습니다.
MVC를 가져 가라. MVC는 이론상 매우 간단하며 프레임 워크 도움없이 구현할 수 있습니다. 그러나 훌륭한 MVC 프레임 워크는 즉시 사용할 수있는 구조를 제공하며, 큰 MVC 프로젝트를 만들 때 필요한 다른 모든 “측면”을 고려하여 가장 많이 사용하는 이유입니다.
이것이 바로 Apache Camel이 EIP를위한 것입니다. EIP를 준수하기 위해 솔루션을 구현하려는 사람들을위한 완벽한 프로덕션 준비 프레임 워크입니다.
답변
프로젝트 설명을 작성하는 것은 복잡하지 않아야합니다.
내가 말하다:
Apache Camel은 라우팅 기술이 적용된 메시징 기술입니다. 메시징 시작점과 끝점을 결합하여 다른 소스에서 다른 목적지로 메시지를 전송할 수 있습니다. 예 : JMS-> JSON, HTTP-> JMS 또는 깔때기 FTP-> JMS, HTTP-> JMS, JSON-> JMS
위키피디아의 말 :
Apache Camel은 규칙 및 라우팅 규칙을 구성하기 위해 API (또는 선언적 Java 도메인 특정 언어)를 사용하여 엔터프라이즈 통합 패턴의 Java 오브젝트 기반 구현을 제공하는 규칙 기반 라우팅 및 중개 엔진입니다. 도메인 별 언어는 Apache Camel이 대량의 XML 구성 파일없이 일반 Java 코드를 사용하여 IDE에서 유형이 안전한 스마트 라우팅 규칙 완성을 지원할 수 있음을 의미합니다. Spring 내부의 XML 구성도 지원됩니다.
보다? 힘들지 않았나요?
답변
한마디로 :
시스템 연결 / 통합 요구 사항이있는 경우 일부 데이터 소스에 연결 한 다음 비즈니스 요구 사항에 맞게이 데이터를 처리해야합니다.
그렇게하려면 :
1) 당신은 그것을 할 수있는 사용자 정의 프로그램을 개발할 수 있습니다 (시간이 많이 걸리고 이해하기 어려울 수 있으며 다른 개발자를 위해 유지)
2) 또는 Apache Camel을 사용하여 표준화 된 방식으로 수행 할 수 있습니다 (이미 개발 된 대부분의 커넥터가 있으므로 프로세스를 설정하고 논리를 프로세스하면됩니다).
낙타가 당신을 도울 것입니다 :
- 모든 소스 / 포맷에서 데이터 소비
- 이 데이터 처리
- 모든 소스 / 포맷으로 데이터 출력
Apache Camel을 사용하면 시스템을 다른 개발자에게 쉽게 이해 / 유지 / 확장 할 수 있습니다.
Apache Camel은 Enterprise Integration Patterns로 개발되었습니다. 패턴은 시스템을 좋은 방법으로 통합하는 데 도움이됩니다.
답변
Camel은 A에서 B로 메시지를 보냅니다.
왜 이것이 전체 프레임 워크입니까? 글쎄, 당신이 가지고 있다면 :
- 많은 발신자와 수신자
- 프로토콜 다스 (
ftp
,http
,jms
등) - 많은 복잡한 규칙
- 수신자 A와 B에게만 메시지 A 보내기
- 메시지 B를 수신자 C 에 XML로 보내지 만, 부분적으로 변환 하고, 보강 하고 (메타 데이터 추가) IF 조건 X 를 수신자 D에도 CSV 로 보내십시오 .
이제 다음이 필요합니다.
- 프로토콜 간 번역
- 접착제구성 요소를 서로
- 경로 정의- 어디로 가는가
- 어떤 경우에는 몇 가지를 필터링
낙타는 상자에서 위와 같은 것을 제공합니다.
무엇과 방법을 정의 할 수있는 멋진 DSL 언어
new DefaultCamelContext().addRoutes(new RouteBuilder() {
public void configure() {
from("jms:incomingMessages")
.choice() // start router rules
.when(header("CamelFileName")
.endsWith(".xml"))
.to("jms:xmlMessages")
.when(header("CamelFileName")
.endsWith(".csv"))
.to("ftp:csvMessages");
}
답변
다이어그램은 수천 개의 설명보다 낫습니다. 이 다이어그램은 Camel의 아키텍처를 보여줍니다.
답변
분석에 기초
항공사 소유주 (예 : American Airlines, Jet Airways)의 신발을 착용하면 낙타 기반 노선을 쉽게 이해할 수 있습니다.
‘항공사’의 목적은 ‘도시’에서 다른 도시로 ‘승객’을 ‘운반’하는 것입니다. 승객을 운송하기 위해 Boeing, Airbus, HAL과 같은 다른 ‘항공 회사’의 항공기를 사용합니다.
항공사는 출발 도시의 ‘공항’을 사용하여 승객을 탑승시키고 출발 도시의 공항을 사용하여 탑승자를 탑승시킵니다. 승객은 여러 도시로 ‘여행’할 수 있지만 항공사의 항공기와 도시 사이를 여행하려면 공항을 통과해야하는 모든 곳이 있습니다.
도시에서 출발하는 승객은 본질적으로 항공사의 항공기에 ‘도착’됩니다. 그리고 도시로 ‘도착’하는 통행인은 본질적으로 항공기에서 출발합니다. 우리는 항공사 소유자의 입장에 있기 때문에 ‘도착 승객’과 ‘출국 승객’이라는 용어는 도시의 관점에 기초한 기존의 개념과 반대입니다.
각 도시의 동일한 ‘공항’인프라는 ‘출발’승객과 ‘도착’승객이 사용합니다. 공항은 출발 승객에게 ‘출발 인프라’를 제공하며, 이는 도착 승객에게 제공되는 ‘도착 인프라’와 다릅니다.
승객은 여행 중에 항공사가 항공기 내부에서 제공하는 다양한 ‘시설’로 인해 하루 종일 활동을 계속할 수 있습니다.
또한 항공사는 ‘현지 언어 이해’또는 ‘여행’준비와 같은 특별 대우를위한 라운지 시설도 제공합니다.
위에서 사용한 몇 가지 단어 / 구절을 다음과 같이 바꾸자.
귀하의 항공사 : Apache Camel
항공기 회사 : 운송 메커니즘
항공사의 항공기 : Apache Camel의 기본 운송 메커니즘
캐리 : 경로
승객 : 메시지;
도시 : 시스템;
공항 : 낙타 구성 요소;
현지 언어 이해 : 유형 변환;
출발 : 생산, 생산
도착 : 소비, 소비
여행 : 라우팅
편의 시설 : 제공
단어를 바꾸면 다음과 같은 결과가 나타납니다.
‘아파치 낙타’의 목적 메시지’를 하나의 ‘시스템’에서 다른 시스템으로 라우팅하는 것입니다. Apache camel은 메시지 라우팅에 다른 전송 메커니즘을 사용합니다.
Apache Camel은 ‘from’시스템의 ‘Camel based Component’를 사용하여 메시지를 선택하고 ‘to’시스템의 ‘Camel based Component’를 사용하여 메시지를 삭제합니다. 메시지는 여러 시스템으로 라우팅 될 수 있지만 ‘Apache Camel의 기본 전송 메커니즘’과 시스템 사이를 이동하려면 ‘Camel based Components’를 거쳐야합니다.
시스템에서 ‘생성 된’메시지는 기본적으로 Apache Camel의 기본 전송 메커니즘에 ‘소비’됩니다. 그리고 시스템이 소비하는 메시지는 본질적으로 ‘Apache Camel의 기본 전송 메커니즘’에 의해 생성됩니다.
우리는 Camel을 이해하려고 노력하고 있기 때문에 Camel의 관점에서 생각해야합니다. ‘소비자 메시지’와 ‘제작자 메시지’라는 용어의 의미는 시스템의 관점을 기반으로하는 기존의 개념과 반대입니다.
‘생산자 메시지’와 ‘소비자 메시지’에서 동일한 ‘Camel based Component’의 코딩 인프라가 사용됩니다. ‘Camel based Component’는 ‘생산자 메시지’에 대한 ‘생산자 엔드 포인트’와 ‘소비자 메시지’에 대한 ‘소비자 엔드 포인트’를 제공합니다.
메시지가 라우팅 될 때 Camel이 메시지를 처리 할 수 있습니다.
이 라우팅 외에도 Camel은 ‘Type Conversion’과 같은 특별한 기능을 제공합니다.