2017-09-12 4 views
0

동일한 유형의 이벤트를 사용하는 FirstConsumerSecondConsumer 두 명의 소비자가 있습니다. 그러나 SecondConsumer의 작업은 부분적으로 FirstConsumer에 의해 수행되는 작업의 출력에 따라 달라집니다.MassTransit 소비자가 동일한 이벤트를 소비하는 순서를 지정하십시오.

SecondConsumer에 의해, 이벤트가 항상FirstConsumer에 의해 해당이 이루어집니다 이후 처음으로 소비 될 수 있도록하는 방법이 있나요?

문제를 해결하기위한 빠르고 쉬운 방법은이를 하나의 소비자로 결합하여 거기에 동시성을 보장하는 것입니다. 그러나 소비자는 책임이 다르므로이를 피하는 것이 좋습니다.

또 다른 해결 방법은 이벤트를 마지막 작업 인 FirstConsumer으로 게시 한 다음 SecondConsumer을 변경하여 해당 이벤트를 대신 소비하는 것입니다.

Automatonymous에 대한 빠른 읽기도했지만 작업을위한 도구로 느껴지지 않습니다.

MassTransit에서이를 구성하고 SecondConsumer을 적용하여 FirstConsumer이 작업을 완료 할 때까지 기다릴 수 있습니까?

답변

0

결국 Automatonymous가가는 길 같습니다.

기본적으로 여기에 설명 된 내용은 http://docs.masstransit-project.com/en/v2-master/overview/saga.html#combining-events-think-fork-join입니다. 즉, FirstConsumer은 이미 수행 한 것과 동일한 이벤트가 발생했을 때 작업을 수행하지만 완료되면 다른 이벤트를 게시해야합니다. SecondConsumer은 두 이벤트가 완료 될 때까지 대기하고 그 이후에만 처리를 시작합니다.

+1

첫 번째 이벤트 처리기에서 게시 한 두 번째 이벤트를 두 번째 이벤트 처리기에 필요한 항목으로 게시 한 다음 두 번째 이벤트 처리기에 필요한 이벤트를 게시하지 않는 것이 좋습니다. 복합 이벤트. –

+0

그래, 기본적으로 이벤트를 다른 이벤트로 다시 게시하고 두 번째 컨슈머에서 이벤트를 소비 할 수는 있지만 포크/조인 방식이 아키텍처 측면에서 어떤 일이 일어나야하는지에 가깝다고 느낍니다. 나는 무언가를 시험하고 싶다. 그리고 무언가를 간단하게 만들려고 시도하는 좋은 방법처럼 느낀다. :) – Slowacki

관련 문제