여러 개의 (2 ~ 10) 뜨거운 관찰 가능 항목이 있는데, 각각 주어진 시간 창에서 하나의 이벤트가 발생하지만 순서는 다릅니다.여러 관찰 가능 항목의 순서 동기화
내가 3 개 과목이 있고, 다음과 같은 임의의 순서로 그들이 불을 설명하기 위해 말할 수 있습니다 :
Subjects: sA, sB, sC
Order of time window 1:
sB, then sA, then sC
Order of time window 2:
sA, then sC, then sB
Order of time window 3:
sA, then sB, then sC
etc.
를 그래서 나는 다음과 같은 스트림 얻을 것이다 병합 할 것입니다 경우 : SB, SA 사우스 캐롤라이나, SA를, sC, sB, sA, sB, sC 등
자, 이제 제 질문은 다음과 같습니다. 각 시간 창 내에서 이벤트 순서를 강제하고 싶습니다. 병합 된 스트림 다음 초래
1. sA
2. sB
3. sC
: SA, SB, 사우스 캐롤라이나 SA, SB, 사우스 캐롤라이나 SA 등
SB, 사우스 캐롤라이나 윈도우 시간 자체는 알려져 있지 않지만 각 이후 이벤트는 각 윈도우에서 정확히 한 번 실행됩니다. 모든 피사체가 해고되면 윈도우가 닫히고 새로운 창이 열립니다.
아이디어 우아하게하는 방법?
확장 질문 (중요하지 않음) : 관찰 가능 항목은 서로 독립적이므로 각 관찰 가능 항목의 순서를 동기화 할 수있는 공통 정적 방법을 소개해야합니다.
public static IObservable<T> SynchronizeOrder<T>(IObservable<T> source, int order)
{
//return synchronized source
}
업데이트 : 뭔가 내 원래의 질문에 분명 아니었다 관찰 가능한 다른 이벤트 유형의 수 (나는 내 예제에서 특정 이벤트 데이터 형식을 사용하지 않은 그 이유는) 결과적 수 있었다 나는 명령 된 관찰 대상을 병합하고 싶지 않다. 독립적 인 관측치가 순서대로 동기화되도록 보장 할 수있는 메커니즘이 필요합니다.
myEventStream
.ObserveOn(TaskFactory)
.DoSomeExpensiveComputation()
.Order(2) //doesn't have to be an extension method
.Subscibe(computationResult=>
sharedRessourceWhereOrderMatters.Update(computationResult))
각 창을 엽니 무엇? 'sA'가 각 창을 닫지 만 어떤 창을 열지 모른다면'sB'와'sC'를 얼마나 오래 붙잡을 지 알 수 없습니다. – yamen
좋은 지적, 제 질문이 충분히 명확하지 않아서 업데이트했습니다. – lukebuehler