2016-06-15 4 views
5

이벤트 기반 아키텍처가 있고 이벤트를 구독하는 서비스가 다음 이벤트 만들기를 계속하기 전에 (동일한 종류의) 여러 이벤트를 기다려야하는 경우에 가장 좋은 방법은 무엇입니까? 사슬에서?이벤트 기반 아키텍처에서 다중 이벤트 종속성 처리

예를 들어 도서 주문 처리 서비스는 주문을 처리하기 전에웨어 하우스에서 주문한 각 도서가 처리 될 때까지 기다려야하는 주문 처리 서비스로, 주문이 선택되어 운송 서비스 (또는 비슷한 것) 주문을 받고 배송 준비를 시작합니다.

답변

5

평행 호송라고도하는 Aggregator 패턴을 사용할 수 있습니다.

기본적으로 집계해야하는 메시지를 식별 할 수있는 방법이 있어야하며 집계 된 집합 전체가 수신되어 처리가 시작될 수 있어야합니다.

외출하지 않고 buying the book *을 사용하는 경우 Apache Camel 통합 플랫폼 웹 사이트에는 집계 자 패턴을 구현할 때 nice resource이 있습니다. 이것이 분명히 카멜에만 한정되는 동안, 당신은 어떤 종류의 것들이 관련되어 있는지를 볼 수 있습니다.

*이 부인은, 나는 Adison 웨슬리와 어떤 방식으로 제휴하고 있지 않다, 또는 책의 저자 중 하나는 ...

+0

제안 해 주셔서 감사합니다. 실제로 Safari Books Online을 통해이 책에 액세스 할 수 있습니다. 애그리 게이터가 내가 찾고있는 것 같아. – Patrick

12

톰은 위에서 언급 한 어 그리 게이터 옆에 또 다른 유용한 패턴은 a saga pattern (미니입니다 워크 플로). 서로 연관되어있는 여러 메시지를 조정하기 위해 NServiceBus이라는 메시징 라이브러리를 사용했습니다.

패턴은 매우 유용하며 장기 실행 프로세스에 적합합니다. 상관 관계가있는 메시지가 OrderStarted, OrderLineProcessed, OrderCompleted와 같은 다른 메시지 인 경우에도 마찬가지입니다.

+0

좋습니다. 실행 중에 실패 할 수있는 프로세스를 처리하기 위해이 서비스를 조사 했으므로 서비스가 다시 시작되거나 새 인스턴스가 시작될 때 선택 될 수 있습니다. – Patrick