programing

Apache Camel이 정확히 무엇입니까?

goodsources 2022. 8. 15. 21:39
반응형

Apache Camel이 정확히 무엇입니까?

카멜이 정확히 뭘 하는지 모르겠어요

Camel에 대해 101단어로 소개하면:

  • 그게 정확히 뭐죠?
  • Java로 작성된 애플리케이션과 어떻게 상호 작용합니까?
  • 서버와 함께 사용할 수 있는 건가요?
  • 독립 프로그램인가요?

카멜이 뭔지 설명해 주세요.

좀 더 쉽게 설명할 수 있는 방법으로는...

Apache Camel이 무엇인지 이해하려면 Enterprise Integration Patterns가 무엇인지 알아야 합니다.

우선, 우리가 이미 알고 있을 것으로 생각되는 것부터 시작합시다.싱글턴 패턴, 공장 패턴 등 문제에 대한 솔루션을 정리하는 방법일 뿐 그 자체는 해결책이 아닙니다.이들 패턴은 4인조 그룹이 책을 출판할 때 분석하고 추출한 것입니다.디자인 패턴이 덕분에 코드를 가장 잘 구조화할 수 있는 방법을 고민하는 데 많은 노력을 기울일 수 있었습니다.

Gang of Four와 마찬가지로 Gregor Hohpe와 Bobby Woolf는 EIP(Enterprise Integration Patterns)라는 책을 저술했습니다.이 책에서는 컴포넌트가 동일한 프로세스에서 실행되거나 다른 머신에서 실행되는 대규모 컴포넌트 기반 시스템을 가장 잘 설계할 수 있는 방법에 대한 일련의 새로운 패턴과 청사진을 제안하고 문서화합니다.

그들은 기본적으로 우리의 시스템을 메시지 지향으로 구성하자고 제안합니다. 여기서 구성 요소는 메시지를 입력 및 출력으로 사용하고 다른 것은 전혀 사용하지 않습니다.시스템 전체를 구성하는 다양한 컴포넌트에서 선택하여 구현할 수 있는 완전한 패턴을 보여줍니다.

Apache Camel이 뭐죠?

Apache Camel은 EIP용 인터페이스, 기본 객체, 일반적으로 필요한 구현, 디버깅툴, 컨피규레이션시스템 및 기타 많은 도우미를 제공합니다.이를 통해 EIP를 따르기 위해 솔루션을 구현해야 할 때 많은 시간을 절약할 수 있습니다.

MVC를 예로 들어보자. MVC는 이론적으로 매우 간단하며 프레임워크의 도움 없이도 구현할 수 있다.그러나 우수한 MVC 프레임워크는 즉시 사용할 수 있는 구조를 제공하며, 대규모 MVC 프로젝트를 작성할 때 필요한 다른 모든 "측면"에 대해 생각해 냈습니다.그 때문에, 델에서는 이러한 구조를 자주 사용하고 있습니다.

그게 바로 Apache Camel이 EIP를 위한 것입니다.EIP를 따르기 위해 솔루션을 구현하려는 사용자를 위한 완벽한 프로덕션 지원 프레임워크입니다.

5분에서 10분 정도 시간이 있다면 Jonathan Anstey의 "Integration with Apache Camel"을 읽어보시길 권장합니다.Camel의 개념에 대한 간단한 소개와 개요를 제공하는 잘 작성된 작품이며 코드 샘플로 사용 사례를 구현합니다.Jonathan은 다음과 같이 쓰고 있습니다.

Apache Camel은 오픈 소스 Java 프레임워크로, 통합이 보다 쉽고 쉽게 접근할 수 있도록 하는 데 초점을 맞추고 있습니다.다음과 같은 기능을 제공합니다.

  • 널리 사용되는 모든 EIP(Enterprise Integration Pattern)의 구체적인 구현
  • 다양한 트랜스포트 및 API에 대한 연결
  • 사용하기 쉬운 도메인 고유 언어(DSL)를 사용하여 EIP와 트랜스포트를 함께 배선할 수 있습니다.

첫 번째 장에서 카멜을 소개하는 카멜액션(Camel in Action, 2nd Ed. is here)의 무료 장도 있다.조나단은 나와 그 책의 공동 저자이다.

프로젝트 설명을 작성하는 것은 복잡하지 않습니다.

나는 말한다:

Apache Camel은 메시징 테크놀로지와 라우팅의 결합체입니다.메시징의 시작점과 끝점을 결합하여 다른 발신기지에서 다른 수신처로 메시지를 전송할 수 있습니다.예: JMS -> JSON, HTTP -> JMS 또는 FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia에 따르면:

Apache Camel은 라우팅 및 중개 규칙을 설정하기 위해 API(또는 선언형 Java 도메인 고유 언어)를 사용하여 Java 객체 기반 엔터프라이즈 통합 패턴 구현을 제공하는 규칙 기반 라우팅 및 중개 엔진입니다.도메인 고유의 언어는 Apache Camel이 대량의 XML 컨피규레이션파일 없이 일반 Java 코드를 사용하여 IDE에서 타입 세이프한 라우팅 규칙의 스마트 완료를 지원할 수 있음을 의미합니다.단, 스프링 내부의 XML 설정도 지원됩니다.

봤지? 어렵지 않았지?

Camel은 A에서B로 메시지를 보냅니다.

enter image description here

왜 전체적인 틀을 만들었을까요?그렇다면 어떻게 될까요?

  • 많은 송신자와 많은 수신자
  • 12개의 프로토콜(ftp,http,jms등)
  • 많은 복잡한 규칙
    • A 메시지를 리시버 A 및 B에만 보냅니다.
    • 메시지 B 를 리시버 C 에 XML 로서 송신합니다만, 부분적으로 변환해, 그것을 풍부하게 합니다(메타데이터 추가), IF 조건 X 로도 송신합니다만, 리시버 D 에 CSV 로서 송신합니다.

이 시점에서 필요한 것은 다음과 같습니다.

  • 프로토콜 간에 번역하다
  • 컴포넌트를 접착제로 접합하다
  • 루트의 정의 - 어디로 가는가
  • 경우에 따라서는 필터링을 하다

카멜은 개봉 즉시 위와 같은 기능을 제공합니다.

enter image description here

무엇을 어떻게 정의할 수 있는 쿨한 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 in Action도 참조하십시오(다른 사람들이 말했듯이, 훌륭한 책입니다!).

요컨대:

시스템을 접속/통합할 필요가 있는 경우는, 데이터 소스에 접속해, 비즈니스 요건에 맞추어 이 데이터를 처리할 필요가 있는 경우가 있습니다.

그러기 위해서는:

1) 그것을 실현하는 커스텀 프로그램을 개발할 수 있다(시간이 걸리고 이해하기 어려울 수 있다, 다른 개발자를 위해 유지 보수할 수 있다.

2) Apache Camel을 사용하여 표준화된 방법으로 실행할 수도 있습니다(대부분의 커넥터는 이미 개발되어 있습니다.프로세스라고 불리는 로직을 셋업하고 꽂기만 하면 됩니다).

Camel은 다음을 지원합니다.

  1. 모든 소스/포맷에서 데이터 소비
  2. 이 데이터를 처리하다
  3. 임의의 소스/포맷으로 데이터 출력

Apache Camel을 사용하면 시스템을 쉽게 이해/유지/확장할 수 있습니다.

Apache Camel은 Enterprise Integration Patterns와 함께 개발되었습니다.이러한 패턴은 시스템을 적절하게 통합하는 데 도움이 됩니다.-)

유추에 의거하여

항공사 소유자의 입장에서 생각하면 카멜 기반 루팅을 훨씬 쉽게 이해할 수 있다(예:(American Airlines, Jet Airways).

'당신의 항공사'의 목적은 세계의 한 '도시'에서 다른 도시로 '승객'을 '운반'하는 것이다.당신은 승객을 태우기 위해 보잉, 에어버스, HAL과 같은 다른 '항공 회사'의 항공기를 사용한다.

귀사 항공사의 승객은 시내에서 출발하는 공항을 사용하여 탑승하고 시내에서 출발하는 공항을 사용하여 탑승합니다.승객은 여러 도시를 '이동'할 수 있지만, 모든 곳에서 항공사의 항공기와 도시를 이동하기 위해 공항을 통과해야 합니다.

도시에서 출발하는 승객은 기본적으로 항공사의 항공기에 '도착'하는 것입니다.그리고 도시로 '도착'하는 패스세거는 본질적으로 비행기에서 출발하는 것이다.우리는 항공사 소유주의 입장이기 때문에, '도착 승객'과 '출발 승객'이라는 용어는 도시 관점에 입각한 우리의 기존 개념과 반대된다.

출발 승객과 도착 승객은 각 도시의 동일한 '공항' 인프라를 사용한다.공항은 출발 승객에게 '출발 인프라'를 제공하는데, 이는 도착 승객에게 제공되는 '도착 인프라'와는 다릅니다.

항공사가 항공기 내에서 제공하는 다양한 '편의성'으로 인해 승객들은 여행 중에도 자신의 활동에 전념할 수 있습니다.

또한, 항공사는 '현지 언어 이해' 및 '여행' 준비와 같은 특별한 대우를 위한 라운지 시설도 제공합니다.

위에서 사용한 몇 개의 단어/구문을 다음과 같이 바꿉니다.

항공사:아파치 카멜

항공기 회사:수송 메커니즘

항공사의 항공기: Apache Camel의 기본 운송 메커니즘

반송: 루트

승객: 메시지;

시: 시스템;

공항: 카멜 구성 요소;

로컬 언어 이해:유형 변환

출발: 생산, 생산

도착: 소비, 소비

이동: 루티드

어메니티:

단어를 바꾸면 다음과 같이 표시됩니다.

'아파체 카멜'의 목적은 세계의 한 '시스템'에서 다른 '시스템'으로 '메시지'를 전달하는 것이다.Apache camel은 메시지 라우팅에 다른 전송 메커니즘을 사용합니다.

Apache Camel은 '발신' 시스템의 '카멜 기반 구성요소'를 사용하여 메시지를 픽업하고 '발신' 시스템의 '카멜 기반 구성요소'를 사용하여 메시지를 드롭한다.메시지는 여러 시스템으로 전송될 수 있지만, 어디에서나 'Apache Camel's based transport mechanism'과 시스템 사이를 이동하기 위해 'Camel based components'를 통과해야 합니다.

시스템에서 '생산'된 메시지는 기본적으로 Apache Camel의 기본 전송 메커니즘에 '소비'됩니다.그리고 시스템에 의해 소비되는 메시지는 본질적으로 '아파체 카멜의 근본적인 운송 메커니즘'에 의해 생산된다.

우리는 카멜을 이해하려고 노력하고 있기 때문에 카멜의 관점에서 생각해야 한다.'소비자 메시지'와 '생산자 메시지'라는 용어의 의미는 시스템 관점에 입각한 우리의 기존 개념과 반대된다.

'캠 기반 컴포넌트'의 코딩 인프라는 '생산자 메시지'와 '소비자 메시지'가 동일하다.'캠 기반 구성 요소'는 '생산자 메시지'를 위한 '생산자 엔드포인트'와 '소비자 메시지'를 위한 '소비자 엔드포인트'를 제공합니다.

메시지가 라우팅될 때 Camel에 의해 처리될 수 있습니다.

이 라우팅 외에도 Camel은 'Type Conversion' 등의 특별한 기능을 제공합니다.

Apache Camel을 이해하기 전에 알아야 할 것 중 하나는 엔터프라이즈 통합 패턴입니다.현장에 있는 모든 사람이 실제로 그들을 알고 있는 것은 아닙니다.엔터프라이즈 인테그레이션 패턴」책을 읽는 것은 확실하지만, 이러한 패턴에 대한 정보를 입수하려면 , 엔터프라이즈 애플리케이션 통합에 관한 Wikipedia 의 기사등을 참조해 주세요.

주제 영역을 읽고 이해했다면 Apache Camel의 목적을 훨씬 더 잘 이해할 수 있을 것입니다.

HTH

엔터프라이즈 통합 패턴을 알고 있다면 Apache Camel은 모든 EIP를 구현하는 통합 프레임워크 중 하나입니다.

또한 Camel을 웹 컨테이너에 독립 실행형 애플리케이션으로 배포할 수 있습니다.

기본적으로 여러 애플리케이션을 다른 프로토콜과 기술로 통합해야 하는 경우 Camel을 사용할 수 있습니다.

다른 관점에서의 정의:

Apache Camel은 통합 프레임워크입니다.일부 Java 라이브러리로 구성되어 Java 플랫폼에서 통합 문제를 구현하는 데 도움이 됩니다.이것은 어떤 의미와 어떻게 다른 쪽 API와 다른 쪽 ESB(Enterprise Service Bus)와 다른지 내 기사 "Apache Camel 사용 시기"에 설명되어 있습니다.

그게 정확히 뭐죠?

Apache Camel은 많은 엔터프라이즈 통합 패턴을 구현하는 경량 통합 프레임워크입니다.필요한 패턴을 사용하여 다양한 애플리케이션을 쉽게 통합할 수 있습니다.

Java, Spring XML, Scala 또는 Groovy를 사용할 수 있습니다.HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty 등 상상할 수 있는 거의 모든 기술을 사용할 수 있습니다.

기사 및 EIP 패턴 기사를 참조하십시오.

Java로 작성된 애플리케이션과 어떻게 상호 작용합니까?

Camel은 Java Domain Specific Language 또는 DSL을 사용하여 다양한 도메인 고유 언어(DSL)로 엔터프라이즈 통합 패턴 또는 경로를 작성합니다.

Java DSL - fluent builder 스타일을 사용하는 Java 기반 DSL입니다.

엔터프라이즈 인테그레이션 패턴에 대한 설명은 다음과 같은 개념으로 해결됩니다.

메시지, 엔드포인트, 프로듀서, 컨슈머, 라우팅, 버스, 변환프로세스.

Anirban Konar의 이 기사에서 실시간 사용 사례를 확인하십시오.

서버와 함께 사용할 수 있는 건가요?

여러 엔터프라이즈서브시스템 간의 브릿지 역할을 합니다.

독립 프로그램인가요?

통합 프레임워크인 Apache Camel은 서로 다른 독립 애플리케이션을 통합합니다.

Camel의 주요 장점: 모든 통합에 동일한 개념을 사용함으로써 서로 다른 응용 프로그램을 서로 다른 기술(및 다른 프로토콜)로 통합할 수 있습니다.

컴퓨팅에 있어서의 「새로운」의 대부분은, 전혀 새로운 것이 아닙니다.그것은 이미 잘 알려진 것을 둘러싼 혼란스러운 포장일 뿐입니다.이해하기 어려운 것은 보통 다른 목적을 위해 새로운 언어 용어를 발명하거나 기존 용어를 식민지화하기로 결정했기 때문입니다(그 좋은 예가 X 개발자가 "클라이언트"와 "서버"의 의미를 뒤집는 것입니다).

Camel은 애플리케이션 간 미들웨어용 Java 기반 래퍼/API입니다.

미들웨어는 공통 언어 또는 데이터 유형을 공유하지 않는 개체 간에 통역 서비스를 제공하는 소프트웨어의 총칭입니다.

그게 바로 카멜이란 거야EIP 타입의 미들웨어에 대응하고 있는 것에 주목하는 것으로써, 그 기술을 구체화할 수 있습니다.

애플리케이션이 통신하는 데 필요한 세부 사항을 알 수 없기 때문에 미들웨어 자체는 제공하지 않습니다.그러나 미들웨어의 불변 부분을 작성하기 위한 API를 제공합니다(시작점 작성, 끝점 작성, 시작 및 종료 조건 작성 등).

도움이 됐으면 좋겠다.

여기 또 다른 시도가 있다.

웹 방식, ICAN Seebeyond, Tibco BW, IBM Broker와 같은 것들이 어떻게 존재하는지 알고 있습니다.이들은 모두 기업 내 통합 솔루션을 지원했습니다.이러한 도구는 일반적으로 엔터프라이즈 애플리케이션 통합(EAI) 도구라는 이름으로 알려져 있습니다.

이러한 테크놀로지를 중심으로 한 드래그 드롭 툴이 대부분 구축되어 있어 Java에서 어댑터를 작성해야 하는 부분이 있습니다.이러한 어댑터 코드는 테스트되지 않았거나 테스트 시 툴링/자동화가 제대로 이루어지지 않았습니다.

프로그래밍의 설계 패턴과 마찬가지로 일반적인 통합 솔루션에도 엔터프라이즈 통합 패턴이 있습니다.그들은 그레고르 호페와 바비 울프의 동명의 책에 의해 유명해졌다.

하나 또는 여러 EIP를 사용하는 통합 솔루션을 구현하는 것은 상당히 가능하지만, Camel은 XML, Java, Groovy 또는 Scala 중 하나를 사용하여 코드 기반 내에서 이를 수행하려는 시도입니다.

Camel은 풍부한 DSL과 라우팅 메커니즘을 통해 이 책에 기재된 모든 엔터프라이즈 인테그레이션 패턴을 지원합니다.

Camel은 다른 EAI 툴과 경쟁하는 테크놀로지로, 통합 코드 테스트에 대한 지원이 향상되었습니다.Domain Specific Languages(DSL; 도메인 고유 언어) 때문에 코드가 간결합니다.비즈니스 유저도 읽을 수 있고, 무료이며, 생산성이 뛰어납니다.

메시징 및 메시징 문제 해결을 지원하는 프레임워크가 많이 있습니다.그러한 제품 중 하나가 Apache Camel이다.

일반적인 문제의 대부분은 설계 패턴이라고 불리는 검증된 솔루션을 가지고 있습니다.메시징의 설계 패턴은 엔터프라이즈 인테그레이션 패턴(EIP)입니다. 패턴은 여기서 잘 설명되어 있습니다.Apache camel은 EIP를 사용하여 솔루션을 구현하는 데 도움이 됩니다.

통합 프레임워크의 강점은 EIP 또는 다른 패턴을 통해 우리를 촉진하는 능력, 전송 및 컴포넌트의 수, Apache camel이 목록의 맨 위에 있는 개발의 용이성입니다.

각각의 프레임워크는 각각의 장점을 가지고 있습니다. Apache camel의 특별한 특징 중 일부는 다음과 같습니다.

  1. 널리 사용되는 Java DSL 및 Spring xml 기반 DSL과 같은 많은 DSL에 포함되도록 코딩합니다.
  2. 사용하기 쉽고 사용하기 쉽다.
  3. Fuse IDE는 UI를 통해 코드를 작성하는 데 도움이 되는 제품입니다.

쉬운 영어로 말하면, 낙타는 보일러 플레이트 코드 없이 많은 일을 한다.

개요를 설명하자면, 아래 Java DSL은 REST 엔드포인트를 만듭니다.이 엔드포인트는 제품 목록으로 구성된 XML을 받아들여 여러 제품으로 분할하여 Brand Processor의 프로세스 메서드를 호출할 수 있습니다.또한 .parallel Processing(코멘트 첨부 부분)을 추가하는 것만으로 모든 Product Objects를 병렬 처리합니다.(제품 클래스는 입력 xml이 제한되는 XSD에서 JAXB/XJC가 생성한 Java stub입니다.)이 정도의 코드(Camel 의존관계도 거의 없음)는 Java 코드의 100 행을 사용하던 작업을 완료할 수 있습니다.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

루트 ID 및 로깅스테이트먼트 추가 후

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

이것은 샘플에 불과합니다.Camel은 단순한 REST 엔드 포인트 이상의 의미를 가지고 있습니다.플러그 가능한 컴포넌트 리스트(http://camel.apache.org/components.html를 참조해 주세요.

Amazon과 같은 전자상거래 회사를 설립하고, 판매 전략/선택에만 초점을 맞추고 싶다고 가정합니다.아마존 배송대와는 달리, 당신이 판매자에서 창고로 물건을 옮기는 것을 처리하는 대신, 포장처럼 창고에서 그것을 변경하여 다른 도시와 고객들에게 보냅니다.이 모든 작업을 수행하는 회사를 고용하여 모든 창고 위치, 차량 유형, 배송 위치 및 작업 시기 목록을 제공합니다.그럼 저들이 알아서 처리하죠 아파치 카멜이겠죠고객이 물건을 건네주면, 고객이 자유롭게 다른 일에 집중할 수 있도록, 한쪽 끝에서 다른 쪽 끝으로 물건을 옮깁니다.

Camel은 라우팅, 변환, 모니터링에 도움이 됩니다.

다음과 같이 설명할 수 있는 루트를 사용합니다.

서비스 버스는 특정 메시지를 수신하면 큐/토픽과 같은 서비스/브로커 수신처를 통해 해당 메시지를 라우팅합니다.이 경로는 루트라고 불립니다.

예: 당신의 주식 어플리케이션은 분석가로부터 입력을 받았습니다.그것은 어플리케이션/웹 컴포넌트를 통해 처리되며, 그 결과는 특정 주식 업데이트를 위해 모든 관심/등록 회원에게 공개됩니다.

Apache Camel은 엔터프라이즈 통합을 위한 Java 프레임워크입니다.예:- 많은 벤더의 API와 상호작용하는 웹 애플리케이션을 구축하고 있다면 외부 통합 도구로 camel을 사용할 수 있습니다.사용 사례에 따라 더 많은 작업을 수행할 수 있습니다.Manning 출판사에서 나온 Camel in Action은 Camel을 배우기에 좋은 책이다.통합은 다음과 같이 정의할 수 있습니다.

자바 DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

이는 REST API 엔드포인트를 생성하여 외부 API를 호출하여 요청을 반송하는 것입니다.

스프링 DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

질문에 답하다

  1. 그게 정확히 뭐죠?Ans: 엔터프라이즈 통합 패턴을 구현하는 프레임워크입니다.
  2. Java로 작성된 애플리케이션과 어떻게 상호 작용합니까?Ans:- http, ftp, amqp 등 사용 가능한 모든 프로토콜과 상호 작용할 수 있습니다.
  3. 서버와 함께 사용할 수 있는 건가요?Ans:- Tomcat과 같은 컨테이너에 도입할 수도 있고 Java 프로세스로 독립적으로 도입할 수도 있습니다.
  4. 독립 프로그램인가요?대답:- 그럴 수 있다.

도움이 되었으면 좋겠다

101 Word 인트로

Camel은 애플리케이션 통합을 위한 일관된 API와 프로그래밍 모델을 가진 프레임워크입니다.API는 엔터프라이즈 통합 패턴의 이론, 즉 메시징을 사용하는 경향이 있는 설계 패턴에 기초하고 있습니다.이러한 패턴의 대부분을 즉시 실장할 수 있습니다.또, 다른 모든 종류의 시스템과 간단하게 통신할 수 있도록, 200개가 넘는 컴포넌트가 부속되어 있습니다.Camel을 사용하려면 먼저 비즈니스 로직을 POJO로 작성하고 메시지를 중심으로 단순한 인터페이스를 구현합니다.그런 다음 Camel의 DSL을 사용하여 응용 프로그램을 함께 접착하기 위한 규칙 집합인 "루트"를 만듭니다.

확장 인트로

표면적으로는 Camel의 기능은 기존의 Enterprise Service Bus 제품과 맞먹습니다.일반적으로 Camel Route는 서버 측에 존재하는 "메디케이션"(일명 오케스트레이션) 컴포넌트라고 생각합니다만, Java 라이브러리이기 때문에 임베디드도 간단하고 클라이언트 측 앱에서도 사용할 수 있어 포인트 투 포인트 서비스(일명 안무)와 통합할 수 있습니다.카멜 루트 내의 메시지를 처리하는 POJO를 가져다가, 리모트 컨슈머 프로세스(예를 들면, 1개만 개별적으로 확장할 필요가 있는 경우)로 간단하게 전환할 수 있습니다.Camel을 사용하면 필요에 따라 임의의 수의 원격 전송/프로토콜을 통해 루트 또는 프로세서를 연결할 수 있습니다.매우 효율적이고 빠른 바이너리 프로토콜이 필요하십니까? 아니면 더 읽기 쉽고 디버깅하기 쉬운 프로토콜이 필요하십니까?바꾸고 싶다면?Camel을 사용하면 일반적으로 경로에서 한두 줄을 변경하는 것만큼이나 쉽고 비즈니스 로직을 전혀 변경하지 않습니다.또는 둘 다 지원할 수 있습니다. Camel Context에서 여러 경로를 동시에 실행할 수 있습니다.

You don't really need to use Camel for simple applications that are going to live in a single process or JVM - it would be overkill. But it's not conceptually any more difficult than code you may write yourself. And if your requirements change, the separation of business logic and glue code makes it easier to maintain over time. Once you learn the Camel API, it is easy to use it like a Swiss-Army knife and apply it quickly in many different contexts to cut down on the amount of custom code you’d otherwise have to write. You can learn one flavor - the Java DSL, for example, a fluent API that's easy to chain together - and pick up the other flavors easily.

Overall Camel is a great fit if you are trying to do microservices. I have found it invaluable for evolutionary architecture, because you can put off a lot of the difficult, "easy-to-get-wrong" decisions about protocols, transports and other system integration problems until you know more about your problem domain. Just focus on your EIPs and core business logic and switch to new Routes with the "right" components as you learn more.

Yes, this is probably a bit late. But one thing to add to everyone else's comments is that, Camel is actually a toolbox rather than a complete set of features. You should bear this in mind when developing and need to do various transformations and protocol conversions.

Camel itself relies on other frameworks and therefore sometimes you need to understand those as well in order to understand which is best suited for your needs. There are for example multiple ways to handle REST. This can get a bit confusing at first, but once you starting using and testing you will feel at ease and your knowledge of the different concepts will increase.

Apache Camel is a lightweight integration framework that implements all Enterprise Integration patterns. You can easily integrate different applications using the required patterns. You can use Java, Spring XML, Scala or Groovy.

Apache Camel runs on the Java Virtual Machine (JVM). ... The core functionality of Apache Camel is its routing engine. It allocates messages based on the related routes. A route contains flow and integration logic. It is implemented using EIPs and a specific DSL.

enter image description here

Its like a pipeline connecting

From---->To

In between u can add as many channels and pipes. The faucet can be of any type automatic or manual for flow of data and a route to channelize the flow.

It supports and have implementation for all types and kinds of processing. And for same processing many approaches because it has many components and each component can also provide the desired output using different methods under it.

For instance, File transfer can be done in camel with types file moved or copied and also from folder, server or queue.

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

From/to----folder, direct, seda, vm can be anything

Another point of view (based on more fundamental mathematical topics)

The most general computing platform is a Turing Machine.

There is a problem with the Turing machine. All the input/output data stays inside the turing machine. In the real world there are input sources and output sinks external to our Turing machine, and in general governed by systems outside of our control. That is, those external system will send/receive data at will in any format with any desired data-scheduler.

Question: How do we manage to make independent turing-machines speak to each other in the most-general way so that each turing-machine sees their peers as either a source of input-data or sink of output-data?

Answer: Using something like camel, mule, BizTalk or any other ESB that abstract away the data handling between completing distinct "physical" (or virtual software) turing machines.

ReferenceURL : https://stackoverflow.com/questions/8845186/what-exactly-is-apache-camel

반응형