2015-01-21 2 views
13

이해 Akka의은 다중 격리 스레드가 매우 동시적인 방식으로 서로 통신 할 수있는 모델을 제공한다는 것입니다. "액터 모델"을 사용합니다. 각 스레드는 할 일이있는 "액터"입니다. 어떤 메시지가 어떤 조건에서 어떤 액터로 전달되도록 조정할 수 있습니다.Akka는 낙타를 더럽습니까?

저는 Camel을 사용하기 전에, Akka가 매우 성숙하고 문서화가 잘되어있어서 이제는 광택이 없어 졌다고 느낍니다. 필자가 이해하는 바와 같이, Camel은 여러 가지 다른 시스템을 함께 통합하는 엔터프라이즈 통합에 관한 것입니다. 보통은 서비스 버스 방식입니다.

그러나 그것에 대해 생각 : 나는 현재에 낙타를 사용하고있는 경우 : 파일에 대한

  • 설문 조사 FTP 서버, 한 번 발견 ...
  • 는 POJO로 해당 파일의 내용을 변환 POJO와 특정 상태를 가지고, 또는
  • 다른 모든 경우에

I를 데이터베이스에 POJO를 지속하는 경우 다음 ...

  • 이메일을 보내기 Akka와 똑같은 일을 할 수 있습니다. 나는 각각의 단계 (Poll FTP, 변환 파일 -> POJO, 전자 메일 또는 지속)에 대해 1 액터를 가질 수 있으며, 이들을 함께 연결하고 Akka가 모든 비동기/동시성을 처리하게 할 수 있습니다.

    비록 Akka가 동시성 프레임 워크 (액터 사용)이지만, Camel이 통합에 관한 것이지만, Akka가 Camel이하는 모든 것을 해결할 수는없는가? 단어가 : 카멜을 아카 (Akka)로 사용하는 유스 케이스는 아직 존재합니까?

  • +3

    왜 설명없이 downvote?이것은 속임수가 아니며, 연구 노력 (정확한 사용 사례/시나리오를 생각한 의미에서)을 보여 주며, 절대적으로 코드/프로그래밍 관련이며 SSCCE를 위반하지 않습니다! 언 dis은 카멜 커미터일까요? – smeeb

    +1

    Akka는 JVM에서 동시성, 분산 및 복원력이 뛰어난 메시지 기반 응용 프로그램을 작성하기위한 툴킷 및 런타임입니다. 낙타는 EIP입니다. Akka가 EIP 패턴을 구현합니까? Akka는 Camel이하는 일을 할 수 있지만이 두 패키지의 초점은 완전히 다릅니다. – Namphibian

    +0

    설명없이 downvoting 그래, 내 애완 동물도 피곤합니다. – Namphibian

    답변

    22

    악카와 낙타는 두 개의 다른 짐승입니다 (하나는 산이고 하나는 동물입니다).

    직접 언급 : Akka는 원자로 패턴, 즉 잠재적으로 분산 된 시스템을위한 메시지 기반 동시성 엔진을 구현하는 도구입니다.

    낙타는 엔터프라이즈 통합 패턴을 구현하는 DSL/프레임 워크입니다.

    카카에서 쉽게 할 수있는 Akka에서 꽤 많은 것들이 있습니다. 확실한 거래. 그런 다음 Akka는 통합 메시지에 대한 추상화가 없으므로 모든 논리는 다양한 전송 논리 및 옵션을 사용합니다. 그런 다음 Camel, 멀티 캐스트, 분할, 집계, XML/JSON 처리, 텍스트 파일 구문 분석, HL7 등에서 잘 발달 된 EIP가 있습니다. 물론 순수한 자바/스칼라에서이 모든 작업을 수행 할 수는 있지만 요점은 아닙니다. 요점은 기본 로직을 다시 구현하지 않고 DSL을 사용하여 통합을 설명 할 수 있어야한다는 것입니다.

    덜 적습니다. Akka TOGETHER with Camel은 매우 흥미 롭습니다. 특히 Scala를 사용합니다. 그렇다면 배우의 의미론 위에 EIP가 있습니다. 이것은 오른쪽 영역에서 매우 강력합니다.

    예에서

    import akka.actor.Actor 
    import akka.camel.{ Producer, Oneway } 
    import akka.actor.{ ActorSystem, Props } 
    
    class Orders extends Actor with Producer with Oneway { 
        def endpointUri = "jms:queue:Orders" 
    } 
    
    val sys = ActorSystem("some-system") 
    val orders = sys.actorOf(Props[Orders]) 
    
    orders ! <order amount="100" currency="PLN" itemId="12345"/> 
    

    akka.io 전체 샘플/가이드 can be found at typesafe.

    +0

    감사합니다. @Petter (+1) - 그 말이 맞는 것 같습니다. 나는 아직도 당신의 특정 "Akka w/Camel"예제에서 나무를 통해 숲을 보지 못하고 있습니다 : 그 코드에서 무슨 일이 벌어지고 있습니까? POJO를 JMS 대기열로 보내고있는 것처럼 보입니다. Camel (Akka가없는 경우) 또는 Akka (JMS 클라이언트 만 사용)로는 그렇게 할 수 없습니까? 다시 한 번 감사드립니다! – smeeb

    +0

    물론, 아주 간단한 예입니다. 더 많은 예제와 세부 사항은 답변의 링크를 읽어보십시오. Akka조차도 Akka 기반 애플리케이션의 통합 레이어로 Camel을 홍보한다는 것이 핵심입니다. –

    +0

    예제의 마지막 줄을 사랑하십시오! Scala의 XML 지원을 매우 우아하게 사용합니다. –

    관련 문제