Exemple #1
0
 public InMemoryEventStore(LogicSchema logicSchema, ILogger <InMemoryEventStore> logger)
 {
     _logicSchema = logicSchema ?? throw new ArgumentNullException(nameof(logicSchema));
     _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
     Db           = new List <DataItem>();
     _bus         = new InMemoryEventBus(logger);
 }
Exemple #2
0
        public CommandHandler(LogicSchema logicSchema, IEventStore eventStore, ICommandBus commandBus, Func <Type, Service[]> serviceFactory, ILogger <CommandHandler> logger)
        {
            _commandBus     = commandBus ?? throw new ArgumentNullException(nameof(commandBus));
            _eventStore     = eventStore ?? throw new ArgumentNullException(nameof(eventStore));
            _logicSchema    = logicSchema ?? throw new ArgumentNullException(nameof(logicSchema));
            _serviceFactory = serviceFactory ?? throw new ArgumentNullException(nameof(serviceFactory));
            _logger         = logger ?? throw new ArgumentNullException(nameof(logger));

            _commandBus.HandleCommands(HandleCommand);
        }
Exemple #3
0
        /// <summary>
        /// События загружаются из хранилища указанием их терминов.
        /// </summary>
        public virtual async Task LoadingByEventInfo()
        {
            var id          = "1";
            var savedEvents = new[] { new AggLogic.Evt() };

            await EventStore.SaveEvents(id, 0, savedEvents);

            var loadedEvents = await EventStore.LoadEvents(new[] { LogicSchema.GetAggregateEvent(typeof(AggLogic.Evt)) });

            loadedEvents.ShouldNotBeNull();
            loadedEvents.Length.ShouldBe(1);
            loadedEvents.Single().ShouldBe(savedEvents.Single());
        }
Exemple #4
0
        public SagaAgent(LogicSchema logicSchema, IEventStore eventStore, ICommandBus commandBus, ILogger <SagaAgent> logger)
        {
            _logicSchema = logicSchema ?? throw new ArgumentNullException(nameof(logicSchema));
            _eventStore  = eventStore ?? throw new ArgumentNullException(nameof(eventStore));
            _commandBus  = commandBus ?? throw new ArgumentNullException(nameof(commandBus));
            _logger      = logger ?? throw new ArgumentNullException(nameof(logger));

            foreach (var sagaInfo in _logicSchema.Sagas)
            {
                foreach (var eventInfo in sagaInfo.AggregateEvents)
                {
                    _eventStore.ListenEvents(eventInfo, e => ReactToEvent(e));
                    _logger.LogTrace("'{saga}' subscribed to '{event}'", sagaInfo, eventInfo);
                }
            }
        }
Exemple #5
0
        public MongoEventStore(String connectionString, LogicSchema logicSchema, ILogger <MongoEventStore> logger)
        {
            if (String.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentNullException(nameof(connectionString));
            }
            var conventions = new ConventionPack
            {
                new IgnoreExtraElementsConvention(true)
            };

            ConventionRegistry.Register("Cleanic Conventions", conventions, t => true);
            _mongo = new MongoClient(connectionString);

            _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
            _logicSchema = logicSchema ?? throw new ArgumentNullException(nameof(logicSchema));
            _bus         = new InMemoryEventBus(_logger);
            Db           = _mongo.GetDatabase("events");

            _serializationOptions = new JsonSerializerOptions
            {
                Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
            };
        }