Пример #1
0
 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));
        }
Пример #3
0
        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));
 }