2010-02-11 4 views
4

현재 RX 프레임 워크를 사용하여 파이프 라인을 처리하는 워크 플로우와 같은 메시지를 구현하고 있습니다. 본질적으로 메시지 생성자 (네트워크 메시지를 deserialize하고 Subject에서 OnNext()를 호출 함)가 있고 여러 소비자가 있습니다.RX 파이프 라인으로 관찰 할 수 있습니다.

참고 : 및 변환이 확장 메서드 인 경우 IObservable을 반환하면됩니다.

소비자는 다음과 같이 수행합니다

var commerceRequest = messages.Transform(x => GetSomethingFromDatabase(x) 
           .Where(y => y.Value > 5) 
           .Select(y => y.ComplexObject) 
           .If(z => z.IsPaid, respond(z)) 
           .Do(z => SendError(z)); 

commerceRequest가 다음 다른 유사한 파이프 라인을 통해 소비를이는 최종 파이프 라인에 Subscribe()를 호출하는 사람으로 끝나는 상단까지 계속됩니다. 내가 겪고있는 문제는 구독이 메시지 어딘가에서 직접 호출되지 않는 한 기본 메시지가 전파되지 않는다는 것입니다.

메시지를 스택 맨 위로 밀어 넣을 수 있습니까? 나는 이것이 비 정설적 인 접근법이라는 것을 알고 있지만, 나는 메시지에 일어나는 일을 이해하기 위해 코드를 매우 간단하게 만든다고 생각한다. 이것이 완전히 끔찍한 생각이라고 생각한다면 누구나 똑같이하는 다른 방법을 제안 할 수 있습니까?

+0

예 ... 내 생각에 OO의 일반적인 스타일의 모든 것이 다소 파이프 라인 모양이 될 것입니다. 그리고 그것은 좋은 것입니다! – kyoryu

답변

1

구독자가없는 경우 왜 파이프 라인을 통과해야합니까? 중급 단계 중 하나가 부작용에 유용 할 경우 (다른 가입자가 없어도 실행하기를 원할 때) 부작용 작업을 가입자로 다시 작성해야합니다.

체인을 계속하려면 부작용이있는 단계를 통과 작업 (또는 경우에 따라 티)으로 만들 수도 있습니다.