nServiceBus vs Mass Transit vs Rhino Service Bus vs 기타?


104

메시징 시스템을 사용하여 멋지게 분리 된 워크 플로 시스템에있는 파일을 처리하는 데 몇 가지 빠른 스파이크를 수행합니다.

사람들이 위의 각 프레임 워크를 사용할 때 찾은 장단점은 무엇입니까? WCF 바인딩 및 / 또는 비 MSMQ 솔루션과 함께 수동 롤링 MSMQ 시스템과 비교하여 이러한 기능을 사용하면 어떤 이점이 있습니까?

답변:


71

트랜잭션 처리 방법, 예외가 롤백을 유발하는 방법, 끝없이 롤백을 중지하는 방법 (포이즌 메시지)과 같이 제대로 처리해야하는 다소 어려운 사항이 많이 있으므로 수동으로 롤링 된 솔루션은 사용하지 않는 것이 좋습니다. 장기 실행 워크 플로와 통합하여 상태 관리 경계가 정렬되도록하는 방법 등

일종의 내구성 / 트랜잭션 메시징 인프라를 원할 것이므로 MSMQ를 사용하지 않으면 Microsoft 플랫폼의 Service Broker 또는 ActiveMQ와 같은 다른 대안이 남게됩니다. MSMQ는 그렇지 않은 Service Broker와 달리 모든 Windows 컴퓨터에 이미 설치되어 있다는 이점이 있습니다.

NServiceBus, Mass Transit 및 Rhino Service Bus 중에서 선택하는 측면에서 NServiceBus와 MassTransit을 비교하는 이 Stackoverflow 답변 은 시작하기에 좋은 곳입니다.

3.1 릴리스에서는 더 높은 수준의 추상화에서 시스템을 모델링하고 NServiceBus의 구성 및 초기화를 자동으로 수행 할 수있는 Visual Studio 통합 모델링 도구 세트 인 NSB Studio를 도입했습니다. 나는 이것이 정말로 NServiceBus에 찬성하는 비늘을 팁이라고 말하고 싶습니다.

도움이 되었기를 바랍니다.

면책 조항 : 저는 NServiceBus의 저자입니다.


25
Rhino Service Bus는 성 중심입니다. 애플리케이션 아키텍처의 핵심 부분 인 Castle에 익숙하지 않거나 익숙하지 않은 경우 약간의 어려움이있을 수 있습니다. NServiceBus 및 Mass Transit 또는 컨테이너에 구애받지 않습니다. NServiceBus는 시스템을 개발에서 테스트로 전환 할 때 코드 호스팅을 처리하고 활성 인프라 구현 (예 : 인 메모리, MSMQ 및 DB)을 변경하는 "애플리케이션 서버"와 함께 제공됩니다. 또한 메시지 처리 논리 및 장기 실행 프로세스를위한 단위 테스트 기능이 함께 제공됩니다. MassTransit에 이러한 기능이 있다고 생각하지 않습니다.
Udi Dahan

35
Udi가 NServiceBus의 AUTHOR라는 점은 주목할 가치가 있으므로 그의 의견은 여기에서 약간 편향 될 수 있습니다. :) 나는 완전히 동의하며 그가 한 것과 같은 이유로 NServiceBus의 사용을 옹호 할 것입니다.
skb

8
@skb : 동의했습니다! Udi, nservicebus 질문, 특히 이와 같은 질문에 답할 때 어떤 종류의 면책 조항을 제공해야합니다!
andy

14
나는 사람들이 지금 내가 그것을 만든 것을 모르는 NServiceBus를 발견하고 있다는 사실에 여전히 익숙해지고 있습니다
Udi Dahan

5
@UdiDahan : nServiceBus는 어떻게 "오픈 소스"입니까? 사용 허가없이 소스 코드를 게시하는 것은 공유하는 오픈 소스 정신에 아무런 영향을 미치지 않습니다. 나는 살아있는 판매 소프트웨어를 얻을 수있는 당신의 권리를 전적으로지지하지만 (저도 똑같이합니다), 솔루션 (포스트 2.0)을 오픈 소스로 선전하지 않으면 훨씬 더 정확할 것이라고 생각합니다.
Eric J.

52

NServiceBus 는 좋은 제품이지만 라이센스 문제에주의하십시오. 저자가 원하는대로 라이선스 정책을 변경하는 경향이 있습니다. 예를 들어 이전 라이센스 정보를 살펴보십시오 .

프로젝트 개발 도중에 NServiceBus에 많은 돈을 지불해야한다는 것을 알게 될 수 있습니다.

또한 무료 버전에는 성능 제한이 있습니다.

MassTransit완전 무료 오픈 소스이며 제한이 없으며 Apache 2.0 라이선스를 따릅니다.

Rhino Service Bus를 사용하지 않았습니다 .


1
실제로 우리는 여러 컴퓨터에서 무료로 실행할 수있는 버전 3.1의 새 라이선스를 제공 할 것입니다 (처리량 수준은 낮더라도).
Udi Dahan

11
MassTransit은 당신의 남자입니다. 무료입니다. 라이센스 제한이 없습니다. 흐름 디자이너 없이도 할 수 있고 직접 굴릴 수 있다면 이길 수 없습니다. 또한 RabbitMQ 위에 위치 할 수 있으며 MSMQ에는 커뮤니티 Azure 플러그인이 있습니다. MassTranit + RabbitMQ는 우수한 안정적인 환경으로 입증되었으며 소비자 / 생산자를 매우 빠르게 가동 및 실행할 수 있도록합니다.
Bigtoe 2012 년

3
또한 EasyNetQ (rabbitMQ에 대한 간단한 래퍼)를 고려하십시오. Suprised UDI는 제안 4 개의 좋은 대안 2 nServiceBus? 내 말은. 초기 단계에서 메시징 여정에서 사람들을 돕습니다. 2 시작하는 좋은 간단한 (무료) 방법이 많이 있습니다. 쉽고 이상적으로 무료 인 한 무엇을 사용하든 상관 없습니다. (무료로 플레이 할 수 있고, 실제 구현은 무료이며, 나중에는 자유롭게 변경할 수 있습니다.) 성장하면 자신의 관심사 목록을 개발할 수 있습니다. 이 시점에서보다 성숙한 제품은 nservicebus와 같은 쉬운 비용 정당화로 쉬운 결정이됩니다.
Snowcode

MassTransit 4.0으로 MSMQ는 더 이상 지원되지 않습니다 ( masstransit-project.com/MassTransit )
MyGGaN

25

Rhino와 NServicebus의 상태 업데이트 :

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ to Ayende : 이전에 .NET 용 서비스 버스, 즉 Rhino 서비스 버스를 직접 작성했습니다. Rhino Service Bus 사용자는 이제 다시 고려하여 NServiceBus로 이동해야합니까?

Ayende : 2008 년경에 Rhino 서비스 버스를 만들었습니다. 당시 다른 서비스 버스의 상태가 마음에 들지 않았기 때문에 주로 만들었습니다. 서비스 버스를 만들 때 고민과 방향이 달랐지만 4 년 전 일입니다. 그 당시 NServiceBus는 사용하기 쉬운 제품이되고 훨씬 더 나은 개발 스토리를 얻는 데 큰 진전을 이루었다 고 생각합니다. 오늘 서비스 버스로 시작했다면 내 자신의 버스를 만들지 않을 것입니다.


9

MSMQ 기반의 잠재적 단점은 최대 메시지 크기에 대한 제한입니다. IIRC는 약 4MB로 대용량 파일을 처리하고 메시지 내에 파일 내용을 저장하는 경우 쉽게 실행할 수 있습니다.


7
흥미롭게도 대부분의 클라우드 기반 대기열은 100KB의 페이로드도 지원하지 않으므로 향후 많은 앱에서 고려해야 할 사항입니다.
Udi Dahan

32
엔터프라이즈 통합 패턴 (Woolf, Hohpe)에서 클레임 확인 패턴은 특히 이러한 문제를 해결합니다. 큰 페이로드에 대한 참조는 메시지에만 유지되며 메시지는 작게 유지됩니다. 메시지 크기가 크면 메시징 시스템의 처리량이 손상 될 수 있습니다.
Chris Patterson

4
NServiceBus는 크기 제한을 투명하게 해결하는 데이터 버스의 개념을 가지고 있기 때문에 이는 문제가되지 않습니다.
Khalid Abuhakmeh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.