Akka.Net流-使用GroupedWithin

时间:2019-01-24 16:12:36

标签: c# akka.net-streams

我正在测试Akka.Net流,以查看是否可以将其集成到我的项目中,而我对GroupedWithin感到有些困惑。 如果以这种方式使用它,它不会将数据流拆分为多个块,而是只会执行一次:

Akka.Streams.Dsl.Source.Tick(TimeSpan.Zero, TimeSpan.FromMilliseconds(1), new { })
.Select(x => new Measurement { Guid = Guid.NewGuid(), Timestamp = DateTime.Now.Ticks })
.GroupedWithin(1000, TimeSpan.FromMilliseconds(80))
.SelectAsync(2, BulkInsertAsync)
.RunWith(Sink.Ignore<IEnumerable<Measurement>>(), mat);

如果我以这种方式使用它,它的行为将符合预期:

Akka.Streams.Dsl.Source.Tick(TimeSpan.Zero, TimeSpan.FromMilliseconds(1), new { })
.Select(x => new Measurement { Guid = Guid.NewGuid(), Timestamp = DateTime.Now.Ticks })
.GroupedWithin(1000, TimeSpan.FromMilliseconds(80))
.RunForeach(async x => await BulkInsertAsync(x), mat);`

我丢失了某些东西吗?或者应该以这种方式工作?

谢谢。

更新: 这对我有用:

Akka.Streams.Dsl.Source.Tick(TimeSpan.Zero, TimeSpan.FromMilliseconds(1), new { })
.Select(x => new Measurement { Guid = Guid.NewGuid(), Timestamp = DateTime.Now.Ticks })
.GroupedWithin(1000, TimeSpan.FromMilliseconds(80))
.SelectAsync(2, x => {
    await BulkInsertAsync(x);
    return x;
})
.RunWith(Sink.Ignore<IEnumerable<Measurement>>(), mat);

0 个答案:

没有答案