2017-11-16 7 views
2

우리는 아래의 아키텍처와 같이 작업하고 있지만 대기열 및 버스를 사용하여 서로 이야기 할 수있는 일부 마이크로 온 서비스를 제공합니다.MassTransit 및 RabbitMq 호스트 방법

RabbitMQ implementation of an event bus

이제 MassTransit과 RabbitMq을 호스팅해야하는 곳과 혼동을 겪었습니다. 또한 ASP.NET Core 프로젝트 자체가 있어야합니까? 그렇다면 내가 무엇을 할 것인가? 버스 출발? 대기열을 만드시겠습니까? 나는 앞으로 나아갈 수 없다.

+0

설명서를 읽었습니까? RabbitMQ는 메시지 브로커입니다. 그것은 자체적으로 호스팅되어야합니다. MassTransit은 메시징 프레임 워크입니다. 응용 프로그램에서 호스트합니다. MassTransit은 버스를 시작할 때 대기열과 교환을 생성합니다. –

+0

@AlexeyZimarev 예, 또한 샘플 프로젝트를 살펴 보았지만 실제로 혼란 스럽습니다. 두 구성 요소가 위와 같은 아키텍처에 어떻게 들어 맞는지, 동일한 콘솔 앱에서 버스를 시작하고 샘플을 생성하여 엔드 포인트를 만들고 메시지를 보내는 등의 작업은 실제로 잊혀지지 않았습니다. 그것은 솔리드 원칙에 위배되는 것 같습니다 – Mathematics

+0

솔리드 원칙이 위반되는지 확실하지 않으며 Hello World 스타일 앱이 클린 코드로 작성되기를 기대하지 않습니다. 이 모든 것이 당신을 혼란스럽게하는 경우 - 모든 .NET 메시징 프레임 워크에 대한 소개를 살펴보십시오. NServiceBus에는 많은 자료가 있습니다. Pluralsight에는 MassTransit 및 NServiceBus에 대한 소개 과정이 있습니다. 두 메시징 프레임 워크에 동일한 원칙이 적용됩니다. –

답변

2

단순한 MassTransit 예제는 큐와 상호 작용하는 절대 간단한 예제이다.

  1. RabbitMQ는 메시지 브로커입니다. 별도로 호스팅됩니다.
  2. MassTransit은 구현 관련 "배관 작업"을 추상화하여 RabbitMQ (또는 Azure Service Bus)와의 상호 작용을 훨씬 쉽게 해주는 개발 프레임 워크입니다.
  3. 메시지를 큐에 게시하거나 큐에 구독 할 수있는 .NET 서비스를 원하는 수만큼 작성할 수 있습니다.

    RabbitMQ 별도로 호스팅되고, 버스/작성 및 관리 메시징을 사용하는 서비스에서 수행 된 큐 :

+0

피터에게 감사드립니다. 그러나이 대답은 나를 더욱 혼란스럽게합니다 ... https://stackoverflow.com/questions/45247678/why-is-it-not-recommended-to-host-receive-endpoints-in-a-web -application-using-m? rq = 1 만약 내가 당신을 올바르게 이해했다면 ... RabbitMQ는 별도의 컨테이너에 들어갈 수 있지만, 버스를 시작하고 멈추고 엔드 포인트를 호스트해야합니다. rabbitmq가 어디에 있겠습니까? 또는 버스는 버스의 생산자와 소비자로부터 시작되고 중지 될 것인가?도움을 많이 주셔서 감사합니다 – Mathematics

+0

끝점은 버스를 "시작하거나 중지하지 않습니다. 끝 점이 RabbitMQ의 대기열에"연결 "및"연결 해제 "를 관리하고 해당 메시지를 직렬화하기 만합니다. 연결 한 질문은 "연결"및 "연결 끊김"이 올바르게 발생하는지, 응용 프로그램이 다시 시작될 때 어떤 일이 일어나는지 확인하는 기술 구현을 참조하기 만하면됩니다. –

2

우리는 최근에 비슷한 일에 종사, 우리가했던 방법입니다.

메시지를받는 각 서비스에 대해 서비스는이 대기열을 사용하여 메시지를 수신하므로 Maastransit을 사용하여 대기열을 만듭니다.

위와 같이 publish/subscribe 방식의 메시징을 사용하므로 각 서비스 내부에서 논리적 이름의 대기열을 만들고 RabbitMQ 서버 주소에 연결합니다.

보낸 사람을 나타내는 서비스는 사용자가 만든 사용자 지정 유형의 메시지를 게시하고 수신기를 나타내는 서비스는 버스에 등록 된이 유형의 소비자를 만들어이 유형의 메시지를 구독합니다.

희망이 있습니다.

+0

고맙습니다, 당신이 설명한 토폴로지에 대한 이해에 도달했습니다. 저는 이제 MassTransit V4를 .net 코어 2 웹 API에서 작동 시키려고 노력하고 있습니다. 임무가 훌륭합니다. – Mathematics

+1

그 사실을 알고 있습니다 .net 코어가 아닙니다. D –

+0

예, 출시 전 단계이지만 답안에서 제안한 토폴로지에서 작동 할 것이라고 말했지만 튜토리얼을 찾거나 작동 시키려면 복잡합니다. 이는 혼란 때문입니다. , .Net Core 2, MT 오래된 API 대 새로운 API 등 .. – Mathematics

관련 문제