Akka는 JMS / AMQP 메시지 브로커를 폐기합니까? [닫은]


19

나는로 지난 주에 깊은 다이빙을 보냈다 Akka 워드 프로세서마침내 그들이 해결할 것을 배우 시스템이 무엇인지 이해하고 문제.

이해 (와 경험) 기존 JMS / AMQP 메시지 브로커은 다음을 제공하기 위해 존재한다는 것입니다 :

  • 생산자와 소비자 간의 비동기 처리; 과
  • 메시지 배달 보증, 지속성, 재시도 및 폴백 포함

그러나 Akka는 필요한 모든 인프라와 운영 오버 헤드없이 이것을 제공하지 않습니까?

  • Akka에서 모든 액터 통신은 비동기식이며 차단되지 않습니다. 과
  • Akka에서는 SupervisorStrategies재시도, 폴백 및 에스컬레이션을 수행하기 위해 존재합니다. 액터 가 요구 사항 인 경우 사실상 모든 유형의 상점 에 지속되도록 구성 할 수 있습니다 .

이 날 궁금가 그래서 내 애플 Akka를 사용하는 경우, 내가 그림으로 (예 : ActiveMQ를 RabbitMQ, 카프카를) JMS / AMQP 브로커를 가지고 할 필요가 있습니까? 다시 말해, 새로운 Akka 기반 앱이 새로운 JMS / AMQP 브로커 클러스터 의 도입을 보증하는 사용 사례가 있습니까? 그 이유는 무엇?

유일한 주장은 아마도 내 Akka 앱이 다른 시스템과 통합되어야한다는 것입니다. 그러나이 경우 Akka-Camel 모듈을 사용하면 Akka가 Camel의 철저하고 거의 무한한 통합 기능 목록 (TCP, FTP, ZeroMQ, 목록 계속 ...)을 활용할 수 있습니다.

생각?


3
마지막 단락이 Akka가 메시지 브로커를 더 이상 사용하지 않는 이유가 아닙니까? 예를 들어 JMS 호환 메시지 브로커를 통해 원격 C ++ 응용 프로그램과 상호 작용하는 Java 응용 프로그램을 만들고 있습니다. Akka-Camel을 사용하여 Java 응용 프로그램을 작성할 수는 있지만 C ++ 응용 프로그램 때문에 여전히 브로커가 필요합니다.
토마스 오웬스

아아 @ThomasOwens (+1)에게 감사하지만 내 질문을 오해했습니다. 좀 더 명확하게 표현하기 위해 몇 분 안에 문구를 변경하겠습니다. 내가 정말로 묻는 것은 Akka 앱을 구축하는 경우 새로운 JMS / AMQP 브로커 도입 해야 합니까? Akka + Camel (내 생각에 )은 중개인이 일반적으로 해결하는 모든 문제를 해결하기 때문에 대답은 "아니오"라고 생각 합니다. 귀하의 예에서 JMS 브로커 는 C ++ 앱과 통신하는 방법으로 이미 존재 합니다. 새로운 Akka 앱과 함께 추가하지 않습니다. 그래서 Akka-Camel 모듈은 나를 위해 메시지를 처리합니다.
Smeeb

2
어쩌면 오해하지만 Camel은 JMS를 대체하지 않지만 JMS를 통해 메시지를 보내는 데 사용할 수있는 인터페이스를 제공합니다. JMS를 AMQP, RabbitMQ 또는 XMPP로 바꿀 수 있습니다. 내 예에서는 Java + Akka 및 C ++ 응용 프로그램이 새로운 경우에도 JMS를 통해 통신하려면 JMS 호환 메시지 대기열을 소개해야하며 Akka-Camel을 사용하여 그것과 의사 소통하십시오. Camel은 브로커를 제공하지 않으며 여러 프로토콜 내에서 통신하기위한 수단 일뿐입니다. Akka-Camel은 Camel의 인터페이스보다 친숙한 인터페이스를 제공합니다.
토마스 오웬스

다시 한번 감사합니다 @ThomasOwens (+1)-나는 당신이 이것을 너무 생각하고 있다고 생각합니다 :-). 귀하의 예에는 기존 C ++ 앱 (일부 레거시 시스템) 이 있으며 C ++ 앱이 이미 외부 세계와의 통합에 사용 하는 기존 JMS 호환 브로커 가 있습니다. 이 경우 새로운 Akka 앱은 Akka-Camel 모듈을 사용하여이 브로커와 메시지를주고 받도록합니다. 그러나 이것은 내가 여기있는 것이 아닙니다! 지금까지 내가 구축 할 필요가 있다는 이유로이 있는지 궁금 하군요 2 가지 (1) 나의 새로운 Akka 응용 프로그램, 그리고 (2) JMS / AMQP 브로커 : 같은 시간에 ...
smeeb

3
Camel의 무한한 통합 기능을 언급했지만 Nothing과 통합 할 수는 없습니다. 통합 할 무언가가 있어야합니다. 그렇지 않으면 실행하지 않는 많은 서비스에 대한 지원을 즐기는 것입니다. Camel을 사용하여 무언가를 통합하려면 JMS, HTTP 또는 FTP 서버 또는 무언가를 시작하십시오. 그렇지 않으면 무한 통합 기능을 제공하면서도 아무것도 통합하지 않고 행복하게 만듭니다.
Jimmy Hoffa

답변:


12

배우 모델

액터 모델은 많은 동시 계산 및 상태 저장 처리를 처리하는 응용 프로그램을 구축하기위한 컴퓨터 과학 전략입니다. 그것은 유일한 전략은 아니지만 계산을 행위자 로 옮기는 매우 잘 테스트되고 간단하며 신뢰할 수있는 접근 방식으로 , 한 번에 하나씩 처리하는 메시지를 통해 통신합니다.

Akka는 액터 모델을 구현하는 프레임 워크로, 자바 스크립트 대신 JQuery를 사용하는 등 이미 구축 된 모든 인프라와 기능으로 액터 시스템을 구축 할 수 있습니다.

메시징

메시지 시스템은 메시지를 보내고 검색 할 수있는 응용 프로그램입니다. 기본 대기열부터 주제, 펍 / 서브, 지속성 및 기타 기능을 갖춘 대기업 소프트웨어에 이르기까지 다양한 종류가 있지만 최종 목표는 동일합니다. 어떤 바이트를 어딘가에 저장하고 나중에 어떤 종류의 순서로 다시 검색하십시오. 오늘날의 주요 사용 사례는 시스템을 분리하고 다른 스케줄 또는 속도로 비동기 처리를 허용하는 것입니다. RabbitMQ, NATS, Kafka 등은 모두 메시지 시스템의 예입니다.

비교

Actor 모델과 Akka 프레임 워크는 메시지 큐와 같은 응용 프로그램을 빌드 하는 데 유용한 저수준 도구입니다 .

메시지 대기열 대신 Akka를 사용할 수 있습니까? 확실한. 액터 모델을 이미 사용하는 소프트웨어를 빌드하는 경우 특히 동일한 스레드 또는 애플리케이션 내에서 메시지를 보내기 위해 외부 메시지 큐가 필요하지 않을 수 있습니다. Akka Remoting 기능을 사용하여 다른 머신에서 실행중인 다른 액터 시스템으로 메시지를 보낼 수도 있습니다.

그러나 이로 인해 메시징 시스템이 더 이상 사용되지 않습니까? 절대적으로하지. 이 모든 것을 직접 코딩 할 수 있다고해서, 특히 액터 모델이 문제에 좋지 않거나 의사 소통을 위해 다른 언어, 응용 프로그램, 외부 API, 운영 체제, 데이터베이스 등이 필요한 경우 필요하지는 않습니다. 서로 (액터 시스템인지 아닌지).

두 시스템간에 일부 메시지를 전달해야하는 경우 메시지 큐를 사용하십시오. 동일한 애플리케이션 내에서 확장 가능한 상태 저장 처리 및 지연 시간이 짧은 메시징이 필요한 경우 액터 모델을 사용하십시오. 그것들은 완전히 다른 수준으로 존재하며 사용 방법은 구축하는 솔루션에 따라 다릅니다.


이 동일한 액터 모델과 메시징에 대해서는 SO에 대한 훌륭한 답변이 있습니다 : https : //.com 또는 tibco

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.