Program Tip

NServiceBus 대 MassTransit

programtip 2020. 10. 14. 20:53
반응형

NServiceBus 대 MassTransit


NServiceBus 및 MassTransit에 관한 장단점 목록으로 어려움을 겪고 있습니다.

이제 여기에 이미 스레드가 있다는 것을 알고 있지만 실제로 내 질문에 답하지 않습니다.

지금까지 읽은 내용은 다음과 같습니다.

  1. NServiceBus, 예, 라이센스가 있으며 무료로 제공되지 않습니다.
  2. MassTransit, 예, 오픈 소스이지만 문서는 다소 부족한 것 같습니다.

NServiceBus는 오래되었으며 더 많은 참조를 가지고 있습니다. MassTransit에 대해 찾기는 어렵지만 개방적입니다. 그러나 나는 견고한 솔루션을 제공해야하므로 물어봐야합니다.

그러니 두 프레임 워크에 대한 경험이있는 사람을 부탁드립니다. NServiceBus를 선택해야하는 이유는 무엇입니까? 또는 MassTransit을 선택해야하는 이유는 무엇입니까?

성능, 보안, 규모 또는?


요약해야한다면 다음과 같이 말합니다.

상업적 지원이 필요한 경우 NServiceBus로 이동하십시오. 포럼을 지원 수단으로 사용하는 데 익숙하다면 MassTransit이 훌륭한 옵션입니다. 개발자들은 지금까지 우리 문제에 매우 반응했습니다. MassTransit을 선택하면 이제 MSMQ와 RabbitMQ 중에서 선택하게됩니다. DTC가 필요한 경우 MSMQ를 사용하십시오. 더 많은 기능과 더 나은 관리를 원한다면 RabbitMQ를 사용하십시오.

프로젝트에서 다음 두 가지 이유로 NServiceBus에서 MassTransit으로 전환했습니다.

  1. 대중 교통은 무료입니다.
  2. 우리는 RabbitMQ를 사랑합니다

두 프레임 워크를 모두 사용했습니다. MassTransit을 NServiceBus보다 오래 사용했습니다. 내가 본 하이라이트는 다음과 같습니다.

비용:

  • MassTransit은 Apache 2.0 라이센스가 있으며 상업적 프로덕션 용도로 무료로 사용할 수 있지만 NServiceBus는 그렇지 않습니다.

지원하다:

  • Udi가 언급했듯이 상업용 NServiceBus 지원 옵션이 있지만 MassTransit에서는 해당 옵션을 보지 못했습니다.

수송:

  • MassTransit은 MSMQ 및 RabbitMQ를 지원합니다.
  • NServiceBus는 MSMQ 만 지원합니다. RabbitMQ는 NServiceBus 4 이상에서 지원됩니다.

RabbitMQ 대 MSMQ :

  • MSMQ는 잠재적으로 여러 컴퓨터 (예 : SQL 서버, Windows 서비스)에서 여러 프로세스를 포함하는 트랜잭션에 대해 DTC (분산 트랜잭션 코디네이터)를 지원합니다.
  • RabbitMQ에는 우수한 관리 인터페이스가 있습니다.
  • MSMQ는 더 오래 사용되었으며 Microsoft 제품입니다.
  • RabbitMQ는 더 새로운 오픈 소스이며 무료이며 VMWare에서 후원합니다.
  • MSMQ는 기본적으로 대부분의 Windows 컴퓨터에 설치됩니다.

Udi Dahan과 MassTransit 직원 (Chris Patterson, Dru Sellers 및 Travis Smith)은 모두 훌륭한 사람들입니다.


NServiceBus의 원저자로서 저는 제 자신의 기술에 약간 편향되어있을 수 있지만 가능한 한 균형을 유지하려고 노력할 것입니다.

운송 지원

NServiceBus 및 MassTransit 모두 RabbitMQAzure Service Bus 를 지원하지만 NServiceBus는 다음도 지원합니다.

RabbitMQ 주제에 대해

인수는 NServiceBus가 RabbitMQ에 대한 강한지지를 받고 있다고 할 수있다 - 예를 들어, 자사의 지연 배달 기능 대중 교통은 동안 상태 . 그것은 MassTransit 지원하는 그들의 "플러그인이 아직 실험으로 간주됩니다,하지만 우리는 더 많은 플러그인 이상의 보증 아무것도 할 수 없습니다 스스로를 보장합니다. "

또한 RabbitMQ 팀과 매우 긴밀하게 협력 하여 전체 생태계의 이익을 위해 .net SDK기여하고 있습니다.

Azure Service Bus의 경우

Azure Service Bus 팀과의 공동 작업 수준은 .net 코어 SDK에 대한 70 개 이상의 PR로 훨씬 더 높습니다 .

NServiceBus를 사용하면 해당 지식의 전체 깊이를 활용할 수 있습니다.

압형

이것이 가장 큰 차이점입니다.

상당한 시스템을 구축 한 후에는 모든 다른 움직이는 부품이 서로 어떻게 대화하는지에 대한 가시성을 확보하는 것이 정말 중요해집니다. MassTransit은 진단 소스통해 Application Insights 또는 Open Trace와 같은 타사 도구에 대한 소규모 통합 외에는이 영역에서 그다지 많지 않습니다 .

NServiceBus 주변의 서비스 플랫폼은 훨씬 더 발전하여 ServiceInsight를 사용 하여 모든 엔드 포인트에서 시퀀스 다이어그램을 볼 수있는 기능을 제공합니다 .

ServiceInsight를 사용한 시퀀스 다이어그램

또한 모든 엔드 포인트와 메시지의 논리적보기를 얻을 수 있습니다.

NServiceBus 시스템의 논리적보기

본질적으로 시스템 아키텍처에 대한 살아있는 문서를 얻을 수 있습니다.

관리 및 모니터링

이것은 MassTransit에 그다지 많지 않은 또 다른 영역입니다. 통합하고있는 타사 시스템을 사용할 수 없게되고 시스템의 많은 메시지가 오류 대기열에 들어가면 MassTransit이 나중에 RabbitMQ Shovel 플러그인을 사용하여 해당 메시지를 수동으로 다시 이동할 수있는 유일한 솔루션 입니다.

NServiceBus 주변의 서비스 플랫폼에는 해당 오류 대기열의 모니터링, 해당 오류의 원인을 확인하는 그래픽 도구, 실패한 메시지 그룹을 재생하고 실제로 간단한 웹 앱에서 모두 성공적으로 처리되었는지 확인 하는 기능이 포함됩니다. ServicePulse 라고 합니다.

ServicePulse로 실패한 메시지 그룹화

메시지가 실패하기 전에 문제에 대한 조기 경고를 제공 할 수있는 주기적으로 실행되는 상태 확인의 시각화도 있습니다.

마지막으로 플랫폼에서 사용할 수 있는 성능 모니터링이 있습니다.

NServiceBus 성능 모니터링

프로덕션 지원과 관련하여 실제로 전체 패키지를 얻을 수 있습니다.

장기 지원 및 이전 버전과의 호환성

While the Mass Transit folks have always been extremely good at helping anyone who has questions about it on Gitter or their Google Group, I don't think they provide bug fixes on older versions. When your production systems have been around for a couple of years, and you can't just upgrade everything all the time, that starts to be important.

With NServiceBus support includes:

  • 2+ years for each major version
  • An additional 2 years of extended support
  • Guaranteed response times on critical issues
  • 24x7 availability

Consulting & Training

From an offline perspective, there are public courses available around the world on NServiceBus as well as many consultants who can be brought on-site to kickstart a project or to assist in case of problems. I've heard from several companies that decided to switch from MassTransit to NServiceBus because they couldn't get someone on-site when they needed it.

Licensing

What some people still don't know about NServiceBus is that it is FREE for personal use and startups.

개인용 및 스타트 업을위한 무료

When it comes to commercial use, the licensing models around NServiceBus are very flexible, as the broad spectrum of customers indicates, and can be well justified to management. Of course, with MassTransit, the licensing is free.

Hope that helps in some way.


I know it's late to chime in on this question, but for bingleability's sake, I have to mention Rebus (which I happen to be the primary author of).

Rebus is about 8 years old now, and it has been used to move money around and control power plants from the get-go.

It supports most basic queueing systems, like MSMQ, RabbitMQ, Azure Service Bus, Azure Storage Queues, Amazon SQS, etc., but it also supports more funny stuff like using MSSQL, PostgreSQL, and Oracle as transports.

The documentation wiki is fairly comprehensive, although many people seem to get by, because Rebus' APIs are so easily discoverable.

Rebus has always been (and will always be) completely free. It's MIT-licensed, so you can basically do with it what you feel like.

If you end up as a serious Rebus user, and you need a formal support agreement and extra tooling, you can subscribe to Rebus Pro, which is offered by Rebus FM (the company behind Rebus).

The "extra tooling" mentioned above currently comes in the form of Fleet Manager, which can help with things. For example, Fleet Manager completely replaces error queues, so failed messages get stored there instead. This means that failed messages can be viewed, managed, and retried anytime with a few clicks in Fleet Manager.


You could always use Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb :)

Documentation (always improving): http://shuttle.github.io/shuttle-esb/

The Shuttle project has been going almost 2 years and is used production systems. It'll be a matter of choosing what resonates with you.

NServiceBus has a good track record. I have used it previously on a production system (1.9) but not since it has gone commercial (the point at which I started with Shuttle).

I haven't tried MassTransit.

I guess all your options will have the basics (command / event / pub-sub). However, NServiceBus does have sagas and the data bus stuff although I reckon it is easy enough to handle data outside of the service bus itself such as in your endpoint message handlers. I don't know whether MassTransit has sagas/data bus but Shuttle certainly doesn't.

또 다른 고려 사항은 아마도 서비스 버스를 사용하는 방법입니다. 제품의 일부인 경우 NServiceBus와 같은 상용 옵션의 경우 제품 사용자에 대한 비용 영향을 고려해야하며 여전히 사내 개발을 위해 고려해야 할 사항이지만 확실히 정당화.

참고 URL : https://stackoverflow.com/questions/13647423/nservicebus-vs-masstransit

반응형