コード例 #1
0
        public DaemonMsgCreateSerializerSpec()
            : base(@"akka.actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""")
        {
            Akka.Serialization.Serialization.CurrentTransportInformation = null;

            ser = Sys.Serialization;
            supervisor = Sys.ActorOf(Props.Create<MyActor>(), "supervisor");
        }
        public ServiceFabricJournal()
        {
            _extension = ServiceFabricPersistence.Instance.Apply(Context.System);
            _serialization = Context.System.Serialization;

            var settings = _extension.JournalSettings;
            _servicefabricServiceUri = settings.servicefabricServiceUri;
            PendingOperations = new LinkedList<CancellationTokenSource>();
        }
コード例 #3
0
 public LocalSnapshotStore()
 {
     var config = Context.System.Settings.Config.GetConfig("akka.persistence.snapshot-store.local");
     _snapshotDirectory = new DirectoryInfo(config.GetString("dir"));
     ResolveDispatcher(config);
     _saving = new SortedSet<SnapshotMetadata>(SnapshotMetadata.TimestampComparer);
     _serialization = Context.System.Serialization;
     _streamDispatcher = ResolveDispatcher(config);
 }
コード例 #4
0
        protected JournalDbEngine(JournalSettings settings, Akka.Serialization.Serialization serialization)
        {
            Settings = settings;
            _serialization = serialization;

            QueryMapper = new DefaultJournalQueryMapper(serialization);

            PendingOperations = new LinkedList<CancellationTokenSource>();
        }
コード例 #5
0
 public DaemonMsgCreateSerializerSpec()
     : base(@"
     akka.actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote"" 
     akka.remote.helios.tcp {
         hostname = 127.0.0.1
         port = 0
     }        
 ")
 {
     _ser = Sys.Serialization;
     _supervisor = Sys.ActorOf(Props.Create<MyActor>(), "supervisor");
 }
コード例 #6
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="configuration">TBD</param>
        /// <param name="serialization">TBD</param>
        public SqliteSnapshotQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization) : base(configuration, serialization)
        {
            CreateSnapshotTableSql = $@"
                CREATE TABLE IF NOT EXISTS {configuration.FullSnapshotTableName} (
                    {configuration.PersistenceIdColumnName} VARCHAR(255) NOT NULL,
                    {configuration.SequenceNrColumnName} INTEGER(8) NOT NULL,
                    {configuration.TimestampColumnName} INTEGER(8) NOT NULL,
                    {configuration.ManifestColumnName} VARCHAR(255) NOT NULL,
                    {configuration.PayloadColumnName} BLOB NOT NULL,
                    {configuration.SerializerIdColumnName} INTEGER(4),
                    PRIMARY KEY ({configuration.PersistenceIdColumnName}, {configuration.SequenceNrColumnName})
                );";

            InsertSnapshotSql = $@"
                UPDATE {configuration.FullSnapshotTableName}
                SET {configuration.TimestampColumnName} = @Timestamp, {configuration.ManifestColumnName} = @Manifest,
                {configuration.PayloadColumnName} = @Payload, {configuration.SerializerIdColumnName} = @SerializerId
                WHERE {configuration.PersistenceIdColumnName} = @PersistenceId AND {configuration.SequenceNrColumnName} = @SequenceNr;
                INSERT OR IGNORE INTO {configuration.FullSnapshotTableName} ({configuration.PersistenceIdColumnName},
                    {configuration.SequenceNrColumnName}, {configuration.TimestampColumnName},
                    {configuration.ManifestColumnName}, {configuration.PayloadColumnName}, {configuration.SerializerIdColumnName})
                VALUES (@PersistenceId, @SequenceNr, @Timestamp, @Manifest, @Payload, @SerializerId)";
        }
コード例 #7
0
        public SqliteQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization, ITimestampProvider timestampProvider)
            : base(configuration, serialization, timestampProvider)
        {
            ByTagSql = base.ByTagSql + " LIMIT @Take OFFSET @Skip";

            CreateEventsJournalSql = $@"
                CREATE TABLE IF NOT EXISTS {configuration.FullJournalTableName} (
                    {configuration.PersistenceIdColumnName} VARCHAR(255) NOT NULL,
                    {configuration.SequenceNrColumnName} INTEGER(8) NOT NULL,
                    {configuration.IsDeletedColumnName} INTEGER(1) NOT NULL,
                    {configuration.ManifestColumnName} VARCHAR(255) NULL,
                    {configuration.TimestampColumnName} INTEGER NOT NULL,
                    {configuration.PayloadColumnName} BLOB NOT NULL,
                    {configuration.TagsColumnName} VARCHAR(2000) NULL,
                    PRIMARY KEY ({configuration.PersistenceIdColumnName}, {configuration.SequenceNrColumnName})
                );";

            CreateMetaTableSql = $@"
                CREATE TABLE IF NOT EXISTS {configuration.FullMetaTableName} (
                    {configuration.PersistenceIdColumnName} VARCHAR(255) NOT NULL,
                    {configuration.SequenceNrColumnName} INTEGER(8) NOT NULL,
                    PRIMARY KEY ({configuration.PersistenceIdColumnName}, {configuration.SequenceNrColumnName})
                );";
        }
コード例 #8
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="configuration">TBD</param>
        /// <param name="serialization">TBD</param>
        protected AbstractQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization)
        {
            Configuration = configuration;
            Serialization = serialization;

            SelectSnapshotSql = $@"
                SELECT {Configuration.PersistenceIdColumnName},
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName}   
                FROM {Configuration.FullSnapshotTableName} 
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId 
                    AND {Configuration.SequenceNrColumnName} <= @SequenceNr
                    AND {Configuration.TimestampColumnName} <= @Timestamp
                ORDER BY {Configuration.SequenceNrColumnName} DESC";

            DeleteSnapshotSql = $@"
                DELETE FROM {Configuration.FullSnapshotTableName}
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId
                    AND {Configuration.SequenceNrColumnName} = @SequenceNr";

            DeleteSnapshotRangeSql = $@"
                DELETE FROM {Configuration.FullSnapshotTableName}
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId
                    AND {Configuration.SequenceNrColumnName} <= @SequenceNr
                    AND {Configuration.TimestampColumnName} <= @Timestamp";

            InsertSnapshotSql = $@"
                INSERT INTO {Configuration.FullSnapshotTableName} (
                    {Configuration.PersistenceIdColumnName}, 
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName}) VALUES (@PersistenceId, @SequenceNr, @Timestamp, @Manifest, @Payload)";
        }
コード例 #9
0
 public OracleQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #10
0
ファイル: QueryMapper.cs プロジェクト: njannink/sonarlint-vs
 public PostgreSqlSnapshotQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #11
0
        public SqlServerQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization,
                                      ITimestampProvider timestampProvider)
            : base(configuration, serialization, timestampProvider)
        {
            ByTagSql = $@"
            DECLARE @Tag_sized NVARCHAR(100);
            SET @Tag_sized = @Tag;
            SELECT TOP (@Take)
            e.{Configuration.PersistenceIdColumnName} as PersistenceId, 
            e.{Configuration.SequenceNrColumnName} as SequenceNr, 
            e.{Configuration.TimestampColumnName} as Timestamp, 
            e.{Configuration.IsDeletedColumnName} as IsDeleted, 
            e.{Configuration.ManifestColumnName} as Manifest, 
            e.{Configuration.PayloadColumnName} as Payload,
            e.{Configuration.SerializerIdColumnName} as SerializerId,
            e.{Configuration.OrderingColumnName} as Ordering
            FROM {Configuration.FullJournalTableName} e
            WHERE e.{Configuration.OrderingColumnName} > @Ordering AND e.{Configuration.TagsColumnName} LIKE @Tag_sized
            ORDER BY {Configuration.OrderingColumnName} ASC
            ";
            CreateEventsJournalSql = $@"
            IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{
                    configuration.SchemaName
                }' AND TABLE_NAME = '{configuration.JournalEventsTableName}')
            BEGIN
                CREATE TABLE {configuration.FullJournalTableName} (
                    {configuration.OrderingColumnName} BIGINT IDENTITY(1,1) NOT NULL,
	                {configuration.PersistenceIdColumnName} NVARCHAR(255) NOT NULL,
	                {configuration.SequenceNrColumnName} BIGINT NOT NULL,
                    {configuration.TimestampColumnName} BIGINT NOT NULL,
                    {configuration.IsDeletedColumnName} BIT NOT NULL,
                    {configuration.ManifestColumnName} NVARCHAR(500) NOT NULL,
	                {configuration.PayloadColumnName} VARBINARY(MAX) NOT NULL,
                    {configuration.TagsColumnName} NVARCHAR(100) NULL,
                    {configuration.SerializerIdColumnName} INTEGER NULL,
                    CONSTRAINT PK_{configuration.JournalEventsTableName} PRIMARY KEY ({
                    configuration.OrderingColumnName
                }),
                    CONSTRAINT UQ_{configuration.JournalEventsTableName} UNIQUE ({
                    configuration.PersistenceIdColumnName
                }, {configuration.SequenceNrColumnName})
                );
                CREATE INDEX IX_{configuration.JournalEventsTableName}_{configuration.SequenceNrColumnName} ON {
                    configuration.FullJournalTableName
                }({configuration.SequenceNrColumnName});
                CREATE INDEX IX_{configuration.JournalEventsTableName}_{configuration.TimestampColumnName} ON {
                    configuration.FullJournalTableName
                }({configuration.TimestampColumnName});
            END
            ";
            CreateMetaTableSql     = $@"
            IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{
                    configuration.SchemaName
                }' AND TABLE_NAME = '{configuration.MetaTableName}')
            BEGIN
                CREATE TABLE {configuration.FullMetaTableName} (
	                {configuration.PersistenceIdColumnName} NVARCHAR(255) NOT NULL,
	                {configuration.SequenceNrColumnName} BIGINT NOT NULL,
                    CONSTRAINT PK_{configuration.MetaTableName} PRIMARY KEY ({configuration.PersistenceIdColumnName}, {
                    configuration.SequenceNrColumnName
                })
                );
            END
            ";
        }
コード例 #12
0
ファイル: QueryExecutor.cs プロジェクト: Micha-kun/akka.net
        protected AbstractQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization)
        {
            Configuration = configuration;
            Serialization = serialization;

            SelectSnapshotSql = $@"
                SELECT {Configuration.PersistenceIdColumnName},
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName}   
                FROM {Configuration.FullSnapshotTableName} 
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId 
                    AND {Configuration.SequenceNrColumnName} <= @SequenceNr
                    AND {Configuration.TimestampColumnName} <= @Timestamp
                ORDER BY {Configuration.SequenceNrColumnName} DESC";

            DeleteSnapshotSql = $@"
                DELETE FROM {Configuration.FullSnapshotTableName}
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId
                    AND {Configuration.SequenceNrColumnName} = @SequenceNr";

            DeleteSnapshotRangeSql = $@"
                DELETE FROM {Configuration.FullSnapshotTableName}
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId
                    AND {Configuration.SequenceNrColumnName} <= @SequenceNr
                    AND {Configuration.TimestampColumnName} <= @Timestamp";

            InsertSnapshotSql = $@"
                INSERT INTO {Configuration.FullSnapshotTableName} (
                    {Configuration.PersistenceIdColumnName}, 
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName}) VALUES (@PersistenceId, @SequenceNr, @Timestamp, @Manifest, @Payload)";
        }
コード例 #13
0
 public SqlJournalEngine(JournalSettings journalSettings, Akka.Serialization.Serialization serialization)
     : base(journalSettings, serialization)
 {
     QueryBuilder = new DefaultJournalQueryBuilder(journalSettings.TableName, journalSettings.SchemaName);
 }
コード例 #14
0
 public DaemonMsgCreateSerializerSpec()
     : base(@"akka.actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""")
 {
     ser = Sys.Serialization;
     supervisor = Sys.ActorOf(Props.Create<MyActor>(), "supervisor");
 }
コード例 #15
0
 public PostgreSqlSnapshotQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #16
0
ファイル: QueryExecutor.cs プロジェクト: yfer/akka.net
        protected AbstractQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization, ITimestampProvider timestampProvider)
        {
            TimestampProvider = timestampProvider;
            Serialization     = serialization;
            Configuration     = configuration;

            var allEventColumnNames = $@"
                e.{Configuration.PersistenceIdColumnName} as PersistenceId, 
                e.{Configuration.SequenceNrColumnName} as SequenceNr, 
                e.{Configuration.TimestampColumnName} as Timestamp, 
                e.{Configuration.IsDeletedColumnName} as IsDeleted, 
                e.{Configuration.ManifestColumnName} as Manifest, 
                e.{Configuration.PayloadColumnName} as Payload";

            AllPersistenceIdsSql = $@"
                SELECT DISTINCT e.{Configuration.PersistenceIdColumnName} as PersistenceId 
                FROM {Configuration.FullJournalTableName} e;";

            HighestSequenceNrSql = $@"
                SELECT MAX(u.SeqNr) as SequenceNr 
                FROM (
                    SELECT e.{Configuration.SequenceNrColumnName} as SeqNr FROM {Configuration.FullJournalTableName} e WHERE e.{Configuration.PersistenceIdColumnName} = @PersistenceId
                    UNION
                    SELECT m.{Configuration.SequenceNrColumnName} as SeqNr FROM {Configuration.FullMetaTableName} m WHERE m.{Configuration.PersistenceIdColumnName} = @PersistenceId) as u";

            DeleteBatchSql = $@"
                DELETE FROM {Configuration.FullJournalTableName} 
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId AND {Configuration.SequenceNrColumnName} <= @ToSequenceNr;";

            UpdateSequenceNrSql = $@"
                INSERT INTO {Configuration.FullMetaTableName} ({Configuration.PersistenceIdColumnName}, {Configuration.SequenceNrColumnName}) 
                VALUES (@PersistenceId, @SequenceNr);";

            ByPersistenceIdSql =
                $@"
                SELECT {allEventColumnNames}
                FROM {Configuration.FullJournalTableName} e
                WHERE e.{Configuration.PersistenceIdColumnName} = @PersistenceId
                AND e.{Configuration.SequenceNrColumnName} BETWEEN @FromSequenceNr AND @ToSequenceNr;";

            ByTagSql =
                $@"
                SELECT {allEventColumnNames}, e.{Configuration.OrderingColumnName} as Ordering
                FROM {Configuration.FullJournalTableName} e
                WHERE e.{Configuration.OrderingColumnName} > @Ordering AND e.{Configuration.TagsColumnName} LIKE @Tag
                ORDER BY {Configuration.OrderingColumnName} ASC";

            InsertEventSql = $@"
                INSERT INTO {Configuration.FullJournalTableName} (
                    {Configuration.PersistenceIdColumnName},
                    {Configuration.SequenceNrColumnName},
                    {Configuration.TimestampColumnName},
                    {Configuration.IsDeletedColumnName},
                    {Configuration.ManifestColumnName},
                    {Configuration.PayloadColumnName},
                    {Configuration.TagsColumnName}
                ) VALUES (
                    @PersistenceId, 
                    @SequenceNr,
                    @Timestamp,
                    @IsDeleted,
                    @Manifest,
                    @Payload,
                    @Tag
                )";

            QueryEventsSql = $@"
                SELECT {allEventColumnNames}
                FROM {Configuration.FullJournalTableName} e
                WHERE ";
        }
コード例 #17
0
 public OracleQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #18
0
ファイル: QueryExecutor.cs プロジェクト: Micha-kun/akka.net
        protected AbstractQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization, ITimestampProvider timestampProvider)
        {
            TimestampProvider = timestampProvider;
            Serialization = serialization;
            Configuration = configuration;

            var allEventColumnNames = $@"
                e.{Configuration.PersistenceIdColumnName} as PersistenceId, 
                e.{Configuration.SequenceNrColumnName} as SequenceNr, 
                e.{Configuration.TimestampColumnName} as Timestamp, 
                e.{Configuration.IsDeletedColumnName} as IsDeleted, 
                e.{Configuration.ManifestColumnName} as Manifest, 
                e.{Configuration.PayloadColumnName} as Payload";

            AllPersistenceIdsSql = $@"
                SELECT DISTINCT e.{Configuration.PersistenceIdColumnName} as PersistenceId 
                FROM {Configuration.FullJournalTableName} e;";

            HighestSequenceNrSql = $@"
                SELECT MAX(u.SeqNr) as SequenceNr 
                FROM (
                    SELECT e.{Configuration.SequenceNrColumnName} as SeqNr FROM {Configuration.FullJournalTableName} e WHERE e.{Configuration.PersistenceIdColumnName} = @PersistenceId
                    UNION
                    SELECT m.{Configuration.SequenceNrColumnName} as SeqNr FROM {Configuration.FullMetaTableName} m WHERE m.{Configuration.PersistenceIdColumnName} = @PersistenceId) as u";

            DeleteBatchSql = $@"
                DELETE FROM {Configuration.FullJournalTableName} 
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId AND {Configuration.SequenceNrColumnName} <= @ToSequenceNr;";

            UpdateSequenceNrSql = $@"
                INSERT INTO {Configuration.FullMetaTableName} ({Configuration.PersistenceIdColumnName}, {Configuration.SequenceNrColumnName}) 
                VALUES (@PersistenceId, @SequenceNr);";

            ByPersistenceIdSql =
                $@"
                SELECT {allEventColumnNames}
                FROM {Configuration.FullJournalTableName} e
                WHERE e.{Configuration.PersistenceIdColumnName} = @PersistenceId
                AND e.{Configuration.SequenceNrColumnName} BETWEEN @FromSequenceNr AND @ToSequenceNr;";

            ByTagSql =
                $@"
                SELECT {allEventColumnNames}, e.{Configuration.OrderingColumnName} as Ordering
                FROM {Configuration.FullJournalTableName} e
                WHERE e.{Configuration.OrderingColumnName} > @Ordering AND e.{Configuration.TagsColumnName} LIKE @Tag
                ORDER BY {Configuration.OrderingColumnName} ASC";

            InsertEventSql = $@"
                INSERT INTO {Configuration.FullJournalTableName} (
                    {Configuration.PersistenceIdColumnName},
                    {Configuration.SequenceNrColumnName},
                    {Configuration.TimestampColumnName},
                    {Configuration.IsDeletedColumnName},
                    {Configuration.ManifestColumnName},
                    {Configuration.PayloadColumnName},
                    {Configuration.TagsColumnName}
                ) VALUES (
                    @PersistenceId, 
                    @SequenceNr,
                    @Timestamp,
                    @IsDeleted,
                    @Manifest,
                    @Payload,
                    @Tag
                )";

            QueryEventsSql = $@"
                SELECT {allEventColumnNames}
                FROM {Configuration.FullJournalTableName} e
                WHERE ";
        }
コード例 #19
0
 public DaemonMsgCreateSerializerSpec()
     : base(@"akka.actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""")
 {
     ser        = Sys.Serialization;
     supervisor = Sys.ActorOf(Props.Create <MyActor>(), "supervisor");
 }
コード例 #20
0
        public MongoDbSnapshotStore()
        {
            _settings = MongoDbPersistence.Get(Context.System).SnapshotStoreSettings;

            _serialization = Context.System.Serialization;
        }
コード例 #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CosmosDBJournal"/> class.
 /// </summary>
 public CosmosDBJournal()
 {
     this.settings      = CosmosDBPersistence.Get(Context.System).JournalSettings;
     this.serialization = Context.System.Serialization;
 }
コード例 #22
0
        public SqlServerQueryExecutor(QueryConfiguration configuration, Akka.Serialization.Serialization serialization)
            : base(configuration, serialization)
        {
            CreateSnapshotTableSql = $@"
            IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{
                    configuration.SchemaName
                }' AND TABLE_NAME = '{configuration.SnapshotTableName}')
            BEGIN
                CREATE TABLE {configuration.FullSnapshotTableName} (
	                {configuration.PersistenceIdColumnName} NVARCHAR(255) NOT NULL,
	                {configuration.SequenceNrColumnName} BIGINT NOT NULL,
                    {configuration.TimestampColumnName} DATETIME2 NOT NULL,
                    {configuration.ManifestColumnName} NVARCHAR(500) NOT NULL,
	                {configuration.PayloadColumnName} VARBINARY(MAX) NOT NULL,
                    {configuration.SerializerIdColumnName} INTEGER NULL
                    CONSTRAINT PK_{configuration.SnapshotTableName} PRIMARY KEY ({
                    configuration.PersistenceIdColumnName
                }, {configuration.SequenceNrColumnName})
                );
                CREATE INDEX IX_{configuration.SnapshotTableName}_{configuration.SequenceNrColumnName} ON {
                    configuration.FullSnapshotTableName
                }({configuration.SequenceNrColumnName});
                CREATE INDEX IX_{configuration.SnapshotTableName}_{configuration.TimestampColumnName} ON {
                    configuration.FullSnapshotTableName
                }({configuration.TimestampColumnName});
            END
            ";

            InsertSnapshotSql = $@"
            IF (
                SELECT COUNT(*) 
                FROM {configuration.FullSnapshotTableName}
                WHERE {configuration.SequenceNrColumnName} = @SequenceNr 
                AND {configuration.PersistenceIdColumnName} = @PersistenceId) > 0 
            UPDATE {configuration.FullSnapshotTableName} 
            SET 
                {configuration.PersistenceIdColumnName} = @PersistenceId, 
                {configuration.SequenceNrColumnName} = @SequenceNr, 
                {configuration.TimestampColumnName} = @Timestamp, 
                {configuration.ManifestColumnName} = @Manifest, 
                {configuration.PayloadColumnName} = @Payload,
                {configuration.SerializerIdColumnName} = @SerializerId
            WHERE {configuration.SequenceNrColumnName} = @SequenceNr 
            AND {configuration.PersistenceIdColumnName} = @PersistenceId ELSE 
            INSERT INTO {configuration.FullSnapshotTableName} (
                {configuration.PersistenceIdColumnName}, 
                {configuration.SequenceNrColumnName}, 
                {configuration.TimestampColumnName}, 
                {configuration.ManifestColumnName}, 
                {configuration.PayloadColumnName},
                {configuration.SerializerIdColumnName}) 
            VALUES (@PersistenceId, @SequenceNr, @Timestamp, @Manifest, @Payload, @SerializerId);";

            SelectSnapshotSql = $@"
                SELECT TOP 1 {Configuration.PersistenceIdColumnName},
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName},
                    {Configuration.SerializerIdColumnName}
                FROM {Configuration.FullSnapshotTableName} 
                WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId 
                    AND {Configuration.SequenceNrColumnName} <= @SequenceNr
                    AND {Configuration.TimestampColumnName} <= @Timestamp
                ORDER BY {Configuration.SequenceNrColumnName} DESC";
        }
コード例 #23
0
 public SqlServerQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #24
0
ファイル: QueryMapper.cs プロジェクト: njimenez/akka.net
 public DefaultSnapshotQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #25
0
 public PostgreSqlJournalEngine(JournalSettings journalSettings, Akka.Serialization.Serialization serialization)
     : base(journalSettings, serialization)
 {
     QueryBuilder = new PostgreSqlJournalQueryBuilder(journalSettings.TableName, journalSettings.SchemaName);
     QueryMapper  = new PostgreSqlJournalQueryMapper(serialization);
 }
コード例 #26
0
 public PostgreSqlJournalQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #27
0
        public PostgreSqlQueryExecutor(PostgreSqlQueryConfiguration configuration, Akka.Serialization.Serialization serialization) : base(configuration, serialization)
        {
            CreateSnapshotTableSql = $@"
                DO
                $do$
                BEGIN
                IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{Configuration.SchemaName}' AND TABLE_NAME = '{Configuration.SnapshotTableName}') THEN
                    CREATE TABLE {Configuration.FullSnapshotTableName} (
                        {Configuration.PersistenceIdColumnName} VARCHAR(255) NOT NULL,
                        {Configuration.SequenceNrColumnName} BIGINT NOT NULL,
                        {Configuration.TimestampColumnName} BIGINT NOT NULL,
                        {Configuration.ManifestColumnName} VARCHAR(500) NOT NULL,
                        {Configuration.PayloadColumnName} {configuration.StoredAs.ToString().ToUpperInvariant()} NOT NULL,
                        {Configuration.SerializerIdColumnName} INTEGER NULL,
                        CONSTRAINT {Configuration.SnapshotTableName}_pk PRIMARY KEY ({Configuration.PersistenceIdColumnName}, {Configuration.SequenceNrColumnName})
                    );
                    CREATE INDEX {Configuration.SnapshotTableName}_{Configuration.SequenceNrColumnName}_idx ON {Configuration.FullSnapshotTableName}({Configuration.SequenceNrColumnName});
                    CREATE INDEX {Configuration.SnapshotTableName}_{Configuration.TimestampColumnName}_idx ON {Configuration.FullSnapshotTableName}({Configuration.TimestampColumnName});
                END IF;
                END
                $do$";

            InsertSnapshotSql = $@"
                WITH upsert AS (
                    UPDATE {Configuration.FullSnapshotTableName} 
                    SET 
                        {Configuration.TimestampColumnName} = @Timestamp, 
                        {Configuration.PayloadColumnName} = @Payload 
                    WHERE {Configuration.PersistenceIdColumnName} = @PersistenceId
                    AND {Configuration.SequenceNrColumnName} = @SequenceNr 
                    RETURNING *) 
                INSERT INTO {Configuration.FullSnapshotTableName} (
                    {Configuration.PersistenceIdColumnName}, 
                    {Configuration.SequenceNrColumnName}, 
                    {Configuration.TimestampColumnName}, 
                    {Configuration.ManifestColumnName}, 
                    {Configuration.PayloadColumnName},
                    {Configuration.SerializerIdColumnName})
                SELECT @PersistenceId, @SequenceNr, @Timestamp, @Manifest, @Payload, @SerializerId
                WHERE NOT EXISTS (SELECT * FROM upsert)";

            switch (configuration.StoredAs)
            {
            case StoredAsType.ByteA:
                _serialize = ss =>
                {
                    var serializer = Serialization.FindSerializerFor(ss);
                    return(new SerializationResult(NpgsqlDbType.Bytea, serializer.ToBinary(ss), serializer));
                };
                _deserialize = (type, serialized, manifest, serializerId) =>
                {
                    if (serializerId.HasValue)
                    {
                        return(Serialization.Deserialize((byte[])serialized, serializerId.Value, manifest));
                    }
                    else
                    {
                        // Support old writes that did not set the serializer id
                        var deserializer = Serialization.FindSerializerForType(type, Configuration.DefaultSerializer);
                        return(deserializer.FromBinary((byte[])serialized, type));
                    }
                };
                break;

            case StoredAsType.JsonB:
                _serialize   = ss => new SerializationResult(NpgsqlDbType.Jsonb, JsonConvert.SerializeObject(ss, configuration.JsonSerializerSettings), null);
                _deserialize = (type, serialized, manifest, serializerId) => JsonConvert.DeserializeObject((string)serialized, type, configuration.JsonSerializerSettings);
                break;

            case StoredAsType.Json:
                _serialize   = ss => new SerializationResult(NpgsqlDbType.Json, JsonConvert.SerializeObject(ss, configuration.JsonSerializerSettings), null);
                _deserialize = (type, serialized, manifest, serializerId) => JsonConvert.DeserializeObject((string)serialized, type, configuration.JsonSerializerSettings);
                break;

            default:
                throw new NotSupportedException($"{configuration.StoredAs} is not supported Db type for a payload");
            }
        }
コード例 #28
0
ファイル: QueryMapper.cs プロジェクト: njimenez/akka.net
 public DefaultJournalQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CosmosDBSnapshotStore"/> class.
 /// </summary>
 public CosmosDBSnapshotStore()
 {
     this.settings      = CosmosDBPersistence.Get(Context.System).SnapshotStoreSettings;
     this.serialization = Context.System.Serialization;
 }
コード例 #30
0
ファイル: QueryMapper.cs プロジェクト: zhanjian/akka.net
 public DefaultSnapshotQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #31
0
 public MessageSerializerPersistenceSpec() : base(
     Configs.Config(
         Configs.CustomSerializers,
         ConfigurationFactory.FromResource<Persistence>("Akka.Persistence.persistence.conf") // for akka-persistence-message
         ))
 {
     _serialization = Sys.Serialization;
 }
コード例 #32
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="transport">TBD</param>
 /// <param name="serialization">TBD</param>
 /// <param name="remoteDaemon">TBD</param>
 public Internals(RemoteTransport transport, Akka.Serialization.Serialization serialization, IInternalActorRef remoteDaemon)
 {
     Transport     = transport;
     Serialization = serialization;
     RemoteDaemon  = remoteDaemon;
 }
コード例 #33
0
        public MessageSerializerRemotingSpec() : base(
            Configs.Config(
                Configs.Remote,
                Configs.CustomSerializers,
                ConfigurationFactory.FromResource<Persistence>("Akka.Persistence.persistence.conf") // for akka-persistence-message
                ))
        {
            _remoteSystem = ActorSystem.Create("remote",
                Configs.Remote.WithFallback(Configs.CustomSerializers)
                    .WithFallback(ConfigurationFactory.FromResource<Persistence>("Akka.Persistence.persistence.conf")));
            _localActor = Sys.ActorOf(Props.Create(() => new LocalActor(Port(_remoteSystem))), "local");

            _serialization = Sys.Serialization;

            _remoteSystem.ActorOf(Props.Create(() => new RemoteActor()), "remote");
        }
コード例 #34
0
 public DefaultJournalQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #35
0
        public MongoDbJournal()
        {
            _settings = MongoDbPersistence.Get(Context.System).JournalSettings;

            _serialization = Context.System.Serialization;
        }
コード例 #36
0
ファイル: SqliteQueryMapper.cs プロジェクト: yaozd/akka.net
 public SqliteQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }
コード例 #37
0
 public PostgreSqlJournalQueryMapper(Akka.Serialization.Serialization serialization)
 {
     _serialization = serialization;
 }