static void Main(string[] args) { //用sqlite持久化后 var actorid = "this1234"; var dbfile = @"C:\MyFile\Source\Repos\Asp.NetCoreExperiment\Asp.NetCoreExperiment\ProtoActor\ProtoPersistenceDemo01\data.sqlite"; var sqliteProvider = new SqliteProvider(new SqliteConnectionStringBuilder() { DataSource = dbfile }); var counter = new Counter(sqliteProvider, actorid); var props = Actor.FromProducer(() => counter); var pid = Actor.Spawn(props); for (int i = 0; i < 2; i++) { var no = int.Parse(Console.ReadLine()); pid.Tell(new Added { Amount = no }); } Console.ReadLine(); //完成处理后清理持久化的操作 sqliteProvider.DeleteEventsAsync(actorid, 10).Wait(); }
/// <summary> /// 事件溯源 /// </summary> /// <param name="actorid"></param> /// <param name="sqliteProvider"></param> private static void CallEventSource(string actorid, SqliteProvider sqliteProvider) { var props = Actor.FromProducer(() => new EventSourceDataActor(sqliteProvider, actorid)); var pid = Actor.Spawn(props); var result = true; while (result) { Console.WriteLine("1、Tell 2、删除持久化 3、退出"); switch (Console.ReadLine()) { case "1": var random = new Random(); var no = random.Next(5, 15); Console.WriteLine($"随机产生的数字:{no}"); pid.Tell(new Data { Amount = no }); break; case "2": //完成处理后清理持久化的操作 sqliteProvider.DeleteEventsAsync(actorid, 100).Wait(); break; case "3": result = false; break; } } }