示例#1
0
        ICassandraReplicationStrategy GetReplicationStrategy(IConfiguration configuration)
        {
            var replStratefyCfg = configuration["cronus_projections_cassandra_replication_strategy"];
            var replFactorCfg   = configuration["cronus_projections_cassandra_replication_factor"];

            ICassandraReplicationStrategy replicationStrategy = null;

            if (string.IsNullOrEmpty(replStratefyCfg))
            {
                replicationStrategy = new SimpleReplicationStrategy(1);
            }
            else if (replStratefyCfg.Equals("simple", StringComparison.OrdinalIgnoreCase))
            {
                replicationStrategy = new SimpleReplicationStrategy(GetReplicationFactor(configuration));
            }
            else if (replStratefyCfg.Equals("network_topology", StringComparison.OrdinalIgnoreCase))
            {
                int      replicationFactor = GetReplicationFactor(configuration);
                var      settings          = new List <NetworkTopologyReplicationStrategy.DataCenterSettings>();
                string[] datacenters       = configuration["cronus_projections_cassandra__datacenters"].Split(',');
                foreach (var datacenter in datacenters)
                {
                    var setting = new NetworkTopologyReplicationStrategy.DataCenterSettings(datacenter, replicationFactor);
                    settings.Add(setting);
                }
                replicationStrategy = new NetworkTopologyReplicationStrategy(settings);
            }

            return(replicationStrategy);
        }
示例#2
0
 public CassandraEventStoreStorageManager(ISession session, string keyspace, ICassandraEventStoreTableNameStrategy tableNameStrategy, ICassandraReplicationStrategy replicationStrategy)
 {
     this.session             = session;
     this.keyspace            = keyspace;
     this.tableNameStrategy   = tableNameStrategy;
     this.replicationStrategy = replicationStrategy;
 }
示例#3
0
        private void CreateKeyspace(string keyspace, ICassandraReplicationStrategy replicationStrategy)
        {
            var createKeySpaceQuery = replicationStrategy.CreateKeySpaceTemplate(keyspace);

            session.Execute(createKeySpaceQuery);
            session.ChangeKeyspace(keyspace);
        }
        public CassandraProvider(IConfiguration configuration, IKeyspaceNamingStrategy keyspaceNamingStrategy, ICassandraReplicationStrategy replicationStrategy, IInitializer initializer = null)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (keyspaceNamingStrategy is null)
            {
                throw new ArgumentNullException(nameof(keyspaceNamingStrategy));
            }
            if (replicationStrategy is null)
            {
                throw new ArgumentNullException(nameof(replicationStrategy));
            }

            this.configuration          = configuration;
            this.keyspaceNamingStrategy = keyspaceNamingStrategy;
            this.replicationStrategy    = replicationStrategy;
            this.initializer            = initializer;
        }
示例#5
0
        internal ICassandraReplicationStrategy GetReplicationStrategy()
        {
            ICassandraReplicationStrategy replicationStrategy = null;

            if (options.ReplicationStrategy.Equals("simple", StringComparison.OrdinalIgnoreCase))
            {
                replicationStrategy = new SimpleReplicationStrategy(options.ReplicationFactor);
            }
            else if (options.ReplicationStrategy.Equals("network_topology", StringComparison.OrdinalIgnoreCase))
            {
                var settings = new List <NetworkTopologyReplicationStrategy.DataCenterSettings>();
                foreach (var datacenter in options.Datacenters)
                {
                    var setting = new NetworkTopologyReplicationStrategy.DataCenterSettings(datacenter, options.ReplicationFactor);
                    settings.Add(setting);
                }
                replicationStrategy = new NetworkTopologyReplicationStrategy(settings);
            }

            return(replicationStrategy);
        }
示例#6
0
        public CassandraProvider(IOptionsMonitor <CassandraProviderOptions> optionsMonitor, IKeyspaceNamingStrategy keyspaceNamingStrategy, ICassandraReplicationStrategy replicationStrategy, ILogger <CassandraProvider> logger, IInitializer initializer = null)
        {
            if (optionsMonitor is null)
            {
                throw new ArgumentNullException(nameof(optionsMonitor));
            }
            if (keyspaceNamingStrategy is null)
            {
                throw new ArgumentNullException(nameof(keyspaceNamingStrategy));
            }
            if (replicationStrategy is null)
            {
                throw new ArgumentNullException(nameof(replicationStrategy));
            }

            this.options = optionsMonitor.CurrentValue;
            this.keyspaceNamingStrategy = keyspaceNamingStrategy;
            this.replicationStrategy    = replicationStrategy;
            this.initializer            = initializer;
            this.logger = logger;
        }
示例#7
0
 /// <summary>
 /// Use to override the default replication strategy.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="self"></param>
 /// <param name="replicationStrategy">Cassandra replication strategy.</param>
 /// <returns></returns>
 public static T SetReplicationStrategy <T>(this T self, ICassandraReplicationStrategy replicationStrategy) where T : ICassandraEventStoreSettings
 {
     self.ReplicationStrategy = replicationStrategy;
     return(self);
 }