public CashMachineFrontend()
        {
            SqlitePersistence.Get(ActorSystem);
            this.cashMachine = ActorSystem.ActorOf(Props.Create(() => new Actors.CashMachine(this)), Keys.CashMachineActorName);

            InitializeComponent();
        }
예제 #2
0
        public SqliteJournalSpec(ITestOutputHelper output)
            : base(CreateSpecConfig("Filename=file:memdb-journal-" + counter.IncrementAndGet() + ".db;Mode=Memory;Cache=Shared"), "SqliteJournalSpec", output)
        {
            SqlitePersistence.Get(Sys);

            Initialize();
        }
예제 #3
0
        public SqliteSnapshotStoreSpec(ITestOutputHelper output)
            : base(CreateSpecConfig("FullUri=file:memdb-snapshot-" + counter.IncrementAndGet() + ".db?mode=memory&cache=shared;"), "SqliteSnapshotStoreSpec", output)
        {
            SqlitePersistence.Get(Sys);

            Initialize();
        }
예제 #4
0
        public BatchingSqliteJournalSpec(ITestOutputHelper output)
            : base(CreateSpecConfig("FullUri=file:memdb-journal-" + counter.IncrementAndGet() + ".db?mode=memory&cache=shared;"), "BatchingSqliteJournalSpec", output)
        {
            SqlitePersistence.Get(Sys);

            Initialize();
        }
예제 #5
0
        public void Sqlite_JournalSettings_default_should_contain_default_config()
        {
            var config   = SqlitePersistence.Get(Sys).DefaultJournalConfig;
            var settings = new JournalSettings(config);

            // values should be correct
            settings.ConnectionString.Should().Be(string.Empty);
            settings.ConnectionStringName.Should().Be(string.Empty);
            settings.ConnectionTimeout.Should().Equals(TimeSpan.FromSeconds(30));
            settings.JournalTableName.Should().Equals("event_journal");
            settings.SchemaName.Should().BeNull();
            settings.MetaTableName.Should().Equals("journal_metadata");
            settings.TimestampProvider.Should().Be("Akka.Persistence.Sql.Common.Journal.DefaultTimestampProvider, Akka.Persistence.Sql.Common");
            settings.AutoInitialize.Should().BeFalse();

            // values should reflect configuration
            settings.ConnectionString.Should().Equals(config.GetString("connection-string"));
            settings.ConnectionStringName.Should().Equals(config.GetString("connection-string-name"));
            settings.ConnectionTimeout.Should().Equals(config.GetTimeSpan("connection-timeout"));
            settings.JournalTableName.Should().Equals(config.GetString("table-name"));
            settings.SchemaName.Should().Equals(config.GetString("schema-name", null));
            settings.MetaTableName.Should().Equals(config.GetString("metadata-table-name"));
            settings.TimestampProvider.Should().Be(config.GetString("timestamp-provider"));
            settings.AutoInitialize.Should().Equals(config.GetBoolean("auto-initialize"));
        }
예제 #6
0
        public static void Main(string[] args)
        {
            string qos        = args[0];
            string topic_root = args[1];
            string client_id  = args[2];
            int    maxNumber  = Int32.Parse(args[3]);

            // Console.WriteLine("{0} starting", client_id);
            MqttQos Qos = ParseQos(qos);

            using (var numbersPersistence = new NumbersPersistence(client_id + ".sqlite3"))
            {
                using (var clientPersistence = new SqlitePersistence(numbersPersistence.conn))
                // using (var p = new InMemoryPersistence())
                {
                    var client = new MqttClient(numbersPersistence, clientPersistence, topic_root, client_id, Qos, maxNumber);
                    while (!client.Finished)
                    {
                        try
                        {
                            client.Run();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("{0} : {1}", client_id, ex.ToString());
                        }
                        Thread.Sleep(TimeSpan.FromSeconds(1));
                    }
                }
            }

            Console.WriteLine("{0} done", client_id);
        }
        public BatchingSqliteJournalSpec(ITestOutputHelper output)
            : base(CreateSpecConfig($"Datasource=memdb-journal-batch-{counter.IncrementAndGet()}.db;Mode=Memory;Cache=Shared"), "BatchingSqliteJournalSpec", output)
        {
            SqlitePersistence.Get(Sys);

            Initialize();
        }
예제 #8
0
        private ActorSystem CreateActorSystem(Config config, IActorSystemDependencyResolver dependencyResolver)
        {
            var actorSystem = ActorSystem.Create("actor-system", config);

            dependencyResolver.RegisterDependencyResolver(actorSystem);
            SqlitePersistence.Get(actorSystem);
            return(actorSystem);
        }
예제 #9
0
        private Config LoadConfiguration(string configFileName)
        {
            var defaultConfig       = ConfigurationFactory.Default();
            var persistenceConfig   = SqlitePersistence.DefaultConfiguration();
            var actualConfiguration = ConfigurationFactory.ParseString(configFileName);
            var config = actualConfiguration.WithFallback(persistenceConfig.WithFallback(defaultConfig));

            return(config);
        }
예제 #10
0
        static void Main(string[] args)
        {
            var system = ActorSystem.Create(Guid.NewGuid().ToString(), ConfigurationFactory.Load());

            SqlitePersistence.Get(system);
            var config = system.Settings.Config.GetConfig("akka.persistence.journal.sqlite");
            var setup  = new BatchingSqliteJournalSetup(config);

            Console.WriteLine("If running properly, BatchingSqliteJournalSetup.ConnectionString should return 'myDB://MyConnectionString'.");
            Console.WriteLine($"Connection string is: {setup.ConnectionString}");
        }
예제 #11
0
파일: Program.cs 프로젝트: deimors/AkkaTest
        static void Main(string[] args)
        {
            var system = ActorSystem.Create("ComicsServer");

            SqlitePersistence.Get(system);

            var issues = system.ActorOf <IssuesActor>("issues");

            Console.WriteLine($"Created {issues.Path}");

            Console.ReadLine();
        }
예제 #12
0
 public AutomaticCluster(ActorSystem system)
 {
     _system = system;
     _cluster = Cluster.Get(system);
     _persistence = SqlitePersistence.Get(system);
     _dbHelper = new DbHelper(() =>
     {
         var conn = new SQLiteConnection(_persistence.DefaultJournalConfig.GetString("connection-string"));
         conn.Open();
         return conn;
     });
 }
예제 #13
0
 public AutomaticCluster(ActorSystem system)
 {
     _system = system;
     _cluster = Cluster.Get(system);
     _persistence = SqlitePersistence.Get(system);
     _dbHelper = new DbHelper(() =>
     {
         var conn = new SQLiteConnection(_persistence.JournalSettings.ConnectionString);
         conn.Open();
         return conn;
     });
 }
예제 #14
0
 public AutomaticCluster(ActorSystem system)
 {
     _system      = system;
     _cluster     = Cluster.Get(system);
     _persistence = SqlitePersistence.Get(system);
     _dbHelper    = new DbHelper(() =>
     {
         var conn = new SQLiteConnection(_persistence.DefaultJournalConfig.GetString("connection-string"));
         conn.Open();
         return(conn);
     });
 }
예제 #15
0
 public AutomaticCluster(ActorSystem system)
 {
     _system      = system;
     _cluster     = Cluster.Get(system);
     _persistence = SqlitePersistence.Get(system);
     _dbHelper    = new DbHelper(() =>
     {
         var conn = new SQLiteConnection(_persistence.JournalSettings.ConnectionString);
         conn.Open();
         return(conn);
     });
 }
예제 #16
0
 public AutomaticCluster(ActorSystem system)
 {
     _system      = system;
     _cluster     = Cluster.Get(system);
     _persistence = SqlitePersistence.Get(system);
     _dbHelper    = new DbHelper(() =>
     {
         var str  = _system.Settings.Config.GetString("akka.persistence.journal.sqlite.connection-string");
         var conn = new SqliteConnection(str);
         conn.Open();
         return(conn);
     });
 }
예제 #17
0
        public void batcher_decorator()
        {
            var options = BuildOptions();

            var store = new SqlitePersistence(options);

            _persistence.Add(store);
            store.InitAsync(CancellationToken.None).Wait();

            var persistenceBatcher = new PersistenceBatchAppendDecorator(store, BatchSize, FlushTimeout);

            TaskWorker.Run(persistenceBatcher, _iterations).GetAwaiter().GetResult();
            persistenceBatcher.Dispose();
        }
예제 #18
0
        static async Task Main(string[] args)
        {
            var config = ConfigurationFactory.ParseString(await File.ReadAllTextAsync("app.conf"))
                         .WithFallback(ClusterSingletonManager.DefaultConfig());

            using (var system = ActorSystem.Create("sharded-cluster-system", config))
            {
                var cluster     = Cluster.Get(system);
                var persistence = SqlitePersistence.Get(system);
                await RunExample(system);

                Console.ReadLine();
            }
        }
예제 #19
0
        public void Should_sqlite_snapshot_has_default_config()
        {
            SqlitePersistence.Get(Sys);

            var config = Sys.Settings.Config.GetConfig("akka.persistence.snapshot-store.sqlite");

            Assert.NotNull(config);
            Assert.Equal("Akka.Persistence.Sqlite.Snapshot.SqliteSnapshotStore, Akka.Persistence.Sqlite", config.GetString("class"));
            Assert.Equal("akka.actor.default-dispatcher", config.GetString("plugin-dispatcher"));
            Assert.Equal(string.Empty, config.GetString("connection-string"));
            Assert.Equal(string.Empty, config.GetString("connection-string-name"));
            Assert.Equal(TimeSpan.FromSeconds(30), config.GetTimeSpan("connection-timeout"));
            Assert.Equal("snapshot_store", config.GetString("table-name"));
            Assert.False(config.GetBoolean("auto-initialize"));
        }
예제 #20
0
        public CartSystem()
        {
            var config = ConfigurationFactory.ParseString(@" 
                akka.persistence.journal.plugin=""akka.persistence.journal.sqlite""
                akka.persistence.journal.sqlite.connection-string=""Data Source=c:\\users\\andrew\\desktop\\akka.db;""
                akka.persistence.journal.sqlite.auto-initialize=true
                akka.persistence.snapshot-store.plugin=""akka.persistence.snapshot-store.sqlite""
                akka.persistence.snapshot-store.sqlite.connection-string=""Data Source=c:\\users\\andrew\\desktop\\akka.db;""
                akka.persistence.snapshot-store.sqlite.auto-initialize=true
            }");

            _system = ActorSystem.Create("CartActorSystem", config);
            SqlitePersistence.Get(_system);

            _queryActor   = _system.ActorOf(QueryActor.CreateProps(), "queryActor");
            _commandActor = _system.ActorOf(CommandActor.CreateProps(_queryActor), "commandActor");
        }
예제 #21
0
        public void Should_sqlite_journal_has_default_config()
        {
            SqlitePersistence.Get(Sys);

            var config = Sys.Settings.Config.GetConfig("akka.persistence.journal.sqlite");

            Assert.NotNull(config);
            Assert.Equal("Akka.Persistence.Sqlite.Journal.SqliteJournal, Akka.Persistence.Sqlite", config.GetString("class"));
            Assert.Equal("akka.actor.default-dispatcher", config.GetString("plugin-dispatcher"));
            Assert.Equal(string.Empty, config.GetString("connection-string"));
            Assert.Equal(string.Empty, config.GetString("connection-string-name"));
            Assert.Equal(TimeSpan.FromSeconds(30), config.GetTimeSpan("connection-timeout"));
            Assert.Equal("event_journal", config.GetString("table-name"));
            Assert.Equal("journal_metadata", config.GetString("metadata-table-name"));
            Assert.False(config.GetBoolean("auto-initialize"));
            Assert.Equal("Akka.Persistence.Sql.Common.Journal.DefaultTimestampProvider, Akka.Persistence.Sql.Common", config.GetString("timestamp-provider"));
        }
예제 #22
0
        public void Should_override_default_Sqlite_fallback_values()
        {
            SqlitePersistence.Get(Sys);

            var journalConfig = Sys.Settings.Config.GetConfig("akka.persistence.journal.sqlite");

            Assert.Equal(TimeSpan.FromSeconds(25), journalConfig.GetTimeSpan("connection-timeout"));
            Assert.Equal("event_journal", journalConfig.GetString("table-name"));
            Assert.Equal("journal_metadata", journalConfig.GetString("metadata-table-name"));

            var snapshotConfig = Sys.Settings.Config.GetConfig("akka.persistence.snapshot-store.sqlite");

            Assert.False(snapshotConfig.IsNullOrEmpty());
            Assert.Equal("DataSource=AkkaSnapShotfxR16.db", snapshotConfig.GetString("connection-string"));
            Assert.Equal(TimeSpan.FromSeconds(25), snapshotConfig.GetTimeSpan("connection-timeout"));
            Assert.Equal("snapshot_store", snapshotConfig.GetString("table-name"));
        }
예제 #23
0
        private IPersistence Create()
        {
            Connect();

            _logger.LogInformation("Starting test #{number}", _testRunId);

            _options = new SqlitePersistenceOptions(LoggerFactory)
            {
                ConnectionString = ConnectionString,
                StreamsTableName = "streams_" + _testRunId + "_" + GetType().Name,
                Serializer       = new JsonMsSqlSerializer()
            };

            _sqlPersistence = new SqlitePersistence(_options);
            _sqlPersistence.DestroyAllAsync(CancellationToken.None).Wait();
            _sqlPersistence.InitAsync(CancellationToken.None).Wait();
            _logger.LogInformation("Test #{number} started", _testRunId);
            return(_sqlPersistence);
        }
예제 #24
0
파일: Program.cs 프로젝트: eaba/akka.net
        public static async Task Main(string[] args)
        {
            #region Console shutdown setup

            var exitEvent = new ManualResetEvent(false);
            Console.CancelKeyPress += (sender, eventArgs) =>
            {
                eventArgs.Cancel = true;
                exitEvent.Set();
            };
            AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) =>
            {
                exitEvent.Set();
            };

            #endregion

            var config = ConfigurationFactory.ParseString(await File.ReadAllTextAsync("app.conf"))
                         .BootstrapFromDocker()
                         .WithFallback(ClusterSingletonManager.DefaultConfig())
                         .WithFallback(SqlitePersistence.DefaultConfiguration());

            var system = ActorSystem.Create("sharded-cluster-system", config);

            var sharding    = ClusterSharding.Get(system);
            var shardRegion = await sharding.StartAsync(
                typeName : "customer",
                entityPropsFactory : e => Props.Create(() => new Customer(e)),
                settings : ClusterShardingSettings.Create(system),
                messageExtractor : new MessageExtractor(10));

            var cluster = Cluster.Get(system);
            cluster.RegisterOnMemberUp(() =>
            {
                ProduceMessages(system, shardRegion);
            });

            exitEvent.WaitOne();
            await system.Terminate();
        }
        public AppEngine()
        {
            var pathToDb = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "sample.db");

            if (File.Exists(pathToDb))
            {
                File.Delete(pathToDb);
            }

            var options = new SqlitePersistenceOptions(new NStore.Core.Logging.NStoreNullLoggerFactory())
            {
                ConnectionString = $"Data Source={pathToDb}",
                Serializer       = new TypeAsSchemaJsonSerializer()
            };
            var persitence = new SqlitePersistence(options);

            _streams = new StreamsFactory(persitence);

            SQLitePCL.Batteries_V2.Init();

            persitence.InitAsync(CancellationToken.None).GetAwaiter().GetResult();
        }
예제 #26
0
        protected IPersistence Create(bool dropOnInit)
        {
            Connect();

            _logger.LogInformation("Starting test #{number}", _testRunId);

            var options = new SqlitePersistenceOptions(LoggerFactory)
            {
                ConnectionString = ConnectionString,
                StreamsTableName = "streams_" + _testRunId + "_" + GetType().Name,
                Serializer       = new JsonSqliteSerializer()
            };

            var sqlPersistence = new SqlitePersistence(options);

            if (dropOnInit)
            {
                sqlPersistence.DestroyAllAsync(CancellationToken.None).Wait();
            }

            sqlPersistence.InitAsync(CancellationToken.None).Wait();
            _logger.LogInformation("Test #{number} started", _testRunId);
            return(sqlPersistence);
        }
예제 #27
0
        public void Sqlite_SnapshotStoreSettings_default_should_contain_default_config()
        {
            var config   = SqlitePersistence.Get(Sys).DefaultSnapshotConfig;
            var settings = new SnapshotStoreSettings(config);

            // values should be correct
            settings.ConnectionString.Should().Be(string.Empty);
            settings.ConnectionStringName.Should().Be(string.Empty);
            settings.ConnectionTimeout.Should().Equals(TimeSpan.FromSeconds(30));
            settings.SchemaName.Should().BeNull();
            settings.TableName.Should().Equals("snapshot");
            settings.AutoInitialize.Should().BeFalse();
            settings.DefaultSerializer.Should().BeNull();
            settings.FullTableName.Should().Equals(settings.TableName);

            // values should reflect configuration
            settings.ConnectionString.Should().Equals(config.GetString("connection-string"));
            settings.ConnectionStringName.Should().Equals(config.GetString("connection-string-name"));
            settings.ConnectionTimeout.Should().Equals(config.GetTimeSpan("connection-timeout"));
            settings.SchemaName.Should().Equals(config.GetString("schema-name", null));
            settings.TableName.Should().Equals(config.GetString("table-name"));
            settings.AutoInitialize.Should().Equals(config.GetBoolean("auto-initialize"));
            settings.DefaultSerializer.Should().Equals(config.GetString("serializer", null));
        }
        public void ActorRecoversItsStateWithEventsWhenRestarted()
        {
            var config = Configuration.ConfigurationFactory.ParseString(@"
akka
{
  persistence
  {
    journal
    {
      plugin = ""akka.persistence.journal.sqlite""
      auto-start-journals = [""akka.persistence.journal.sqlite""]
      sqlite
      {
        class = ""Akka.Persistence.Sqlite.Journal.SqliteJournal, Akka.Persistence.Sqlite""
        connection-string = ""data source=C:\\SQLite\\Databases\\AkkaNetTestsEventStore.db""
        auto-initialize : on
      }
    }
  }
}
");
            var sys    = ActorSystem.Create("my-sys", config.WithFallback(ConfigurationFactory.Default()));

            SqlitePersistence.Get(sys); // Initialize the extension.
            var pa = sys.ActorOf <PersistentActor>();

            pa.Tell(new Cmd("cmd 0"));
            pa.Tell(new Cmd("cmd 1"));
            pa.Tell("restart");
            ExpectMsg("I'm being restarted.");
            pa.Tell("print");
            //ExpectMsg("cmd 0 - num of events before: 0, cmd 1 - num of events before: 1");
            ExpectMsg <string>(msg => msg.Contains("cmd 0") && msg.Contains("cmd 1"));
            pa.Tell("count");
            ExpectMsg <int>(count => count == 2);
        }
예제 #29
0
 public SqliteSnapshotStore()
 {
     _extension = SqlitePersistence.Get(Context.System);
     QueryBuilder = new QueryBuilder(_extension.SnapshotSettings);
     QueryMapper = new SqliteQueryMapper(Context.System.Serialization);
 }
 public SqliteSnapshotStore()
 {
     _extension   = SqlitePersistence.Get(Context.System);
     QueryBuilder = new QueryBuilder(_extension.SnapshotSettings);
     QueryMapper  = new SqliteQueryMapper(Context.System.Serialization);
 }
 public SqliteJournal()
 {
     _extension = SqlitePersistence.Get(Context.System);
 }