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); }
public CassandraEventStoreStorageManager(ISession session, string keyspace, ICassandraEventStoreTableNameStrategy tableNameStrategy, ICassandraReplicationStrategy replicationStrategy) { this.session = session; this.keyspace = keyspace; this.tableNameStrategy = tableNameStrategy; this.replicationStrategy = replicationStrategy; }
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; }
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); }
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; }
/// <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); }