我正在使用GroupByUntil对来自MSMQ的消息进行分组,这些消息具有特定的属性值,这些属性值非常有效。我正在使用此代码。
observable.GroupByUntil(
message => message.Source,
message => message.Body,
message => Observable.Timer(new TimeSpan(0,0,5)) //I thought this was sliding expiration
).Subscribe(HandleGroup);
我错误地认为每次新消息到达给定组时,该组的durationSelector将重新启动,基本上等待持续时间通过而没有新消息,然后再结束该组。我意识到情况并非如此,而且无论如何,durationSelector将继续倒计时。在对每个组进行分组时,为每个组实现滑动durationSelector的最佳方法是什么?
答案 0 :(得分:1)
Switch
是你的朋友。
observable.GroupByUntil(
message => message.Source,
message => message.Body,
group => group
.Select(message => Observable.Timer(new TimeSpan(0, 0, 5)))
.Switch()
).Subscribe(HandleGroup);
说明: