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); }
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); }
/// <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()); }
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); } } }
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) }; }