System.reactive RX GroupByTill带滑动式Till
我使用GroupByUntil对来自MSMQ的消息进行分组,这些消息具有特定的属性值,工作非常出色。我正在使用这个代码System.reactive RX GroupByTill带滑动式Till,system.reactive,System.reactive,我使用GroupByUntil对来自MSMQ的消息进行分组,这些消息具有特定的属性值,工作非常出色。我正在使用这个代码 observable.GroupByUntil( message => message.Source, message => message.Body, message => Observable.Timer(new TimeSpan(0,0,5)) //I thought this was sliding expiration ).S
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将继续倒计时,不管发生什么。在分组时为每个分组实现滑动持续时间选择器的最佳方法是什么?是您的朋友
observable.GroupByUntil(
message => message.Source,
message => message.Body,
group => group
.Select(message => Observable.Timer(new TimeSpan(0, 0, 5)))
.Switch()
).Subscribe(HandleGroup);
说明:
- 对于每条消息,创建一个计时器,在5秒后触发一次
- 如果同一组中出现另一条消息,请删除旧计时器,然后切换到新计时器