public HostConnectionPool(Host host, Configuration config, ISerializer serializer, IObserverFactory observerFactory) { _host = host; _host.Down += OnHostDown; _host.Up += OnHostUp; _host.DistanceChanged += OnDistanceChanged; _config = config ?? throw new ArgumentNullException(nameof(config)); _poolingOptions = config.GetOrCreatePoolingOptions(serializer.ProtocolVersion); _maxRequestsPerConnection = _poolingOptions.GetMaxRequestsPerConnection(); _serializer = serializer; _observerFactory = observerFactory; _timer = config.Timer; _reconnectionSchedule = config.Policies.ReconnectionPolicy.NewSchedule(); _expectedConnectionLength = 1; }
public CatchUpProjector( TState state, ICheckpointPersister checkpointPersister, IPersistenceEngine engine, IStorageResetter storageResetter, IObserverFactory observerFactory ) : base(state) { this.checkpointPersister = checkpointPersister ?? throw new ArgumentNullException(nameof(checkpointPersister)); this.storageResetter = storageResetter ?? throw new ArgumentNullException(nameof(storageResetter)); this.engine = engine ?? throw new ArgumentNullException(nameof(engine)); this.observerFactory = observerFactory ?? throw new ArgumentNullException(nameof(observerFactory)); projectorIdentifier = checkpointPersister.GetProjectorIdentifier(typeof(TState)); }
public KafkaConsumer( IObserverFactory observerFactory, IEventDeserializer deserializer, ConsumerSettings settings, ILoggerFactory loggerFactory) { if (deserializer == null) { throw new ArgumentNullException(nameof(deserializer)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } _observerFactory = observerFactory ?? throw new ArgumentNullException(nameof(observerFactory)); _logger = loggerFactory.CreateLogger <KafkaConsumer>(); if (string.IsNullOrWhiteSpace(settings.Config.BootstrapServers)) { throw new InvalidOperationException("Brokers not specified."); } if (string.IsNullOrEmpty(settings.Topic)) { throw new InvalidOperationException("Topics not specified."); } if (string.IsNullOrEmpty(settings.Config.GroupId)) { throw new InvalidOperationException("Group Id not specified."); } _consumer = new ConsumerBuilder <Guid, IStreamEvent>(settings.Config) .SetKeyDeserializer(KeyDeserializer) .SetValueDeserializer(new ValueObjectDeserializer(deserializer)) .SetErrorHandler((_, e) => _logger.LogError( $"KafkaConsumer internal error: Topic: {settings.Topic}, {e.Reason}, Fatal={e.IsFatal}," + $" IsLocal= {e.IsLocalError}, IsBroker={e.IsBrokerError}")) .Build(); _consumer.Subscribe(settings.Topic); }
public IHostConnectionPool Create(Host host, Configuration config, Serializer serializer, IObserverFactory observerFactory) { return(new HostConnectionPool(host, config, serializer, observerFactory)); }