public void Test() { var userId = Guid.NewGuid(); var schemaName = GenerateSchemaName(); using (var uow = new TransactionScopeUnitOfWork()) { uow.Begin(); using (var session = CreateSession(opt => opt.Events.DatabaseSchemaName = opt.DatabaseSchemaName = schemaName)) { var eventStore = new MartenEventStore(session); //Given eventStore.Store(userId, new UserCreated { UserId = userId, UserName = "******" } ); eventStore.SaveChanges(); //When eventStore.Query().OfType <UserCreated>().ToList().Should().HaveCount(1); } } using (var session = CreateSession(opt => opt.Events.DatabaseSchemaName = opt.DatabaseSchemaName = schemaName)) { //Given var eventStore = new MartenEventStore(session); //When eventStore.Query().OfType <UserCreated>().ToList().Should().HaveCount(0); } }
public static async Task Main(string[] args) { JsonSerializerSettings _jsonSerializerSettings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, NullValueHandling = NullValueHandling.Ignore }; string exchangeName = "CustomerManagement"; //var eventRepository = new SqlEventStore(); var eventRepository = new MartenEventStore(); DateTime fromDateTime = DateTime.Now.AddDays(-100); var factory = new ConnectionFactory() { HostName = "localhost", Port = 5672, UserName = "******", Password = "******" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Direct); do { var events = await eventRepository.GetAll(fromDateTime); if (events?.Any() == true) { fromDateTime = events.Last().CreatedAt; } foreach (var item in events) { var domainEvent = JsonConvert.DeserializeObject(item.Data, _jsonSerializerSettings); var body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(domainEvent)); channel.BasicPublish(exchange: exchangeName, routingKey: item.Name, basicProperties: null, body: body); } System.Threading.Thread.Sleep(1000); } while (true); } }
public MartenEventStoreTests() { Sut = new MartenEventStore(Session); }
public MartenEventSourcedRepository(IDocumentSession documentSession, MartenEventStore eventStore) { this.documentSession = documentSession ?? throw new ArgumentException(nameof(documentSession)); this.eventStore = eventStore ?? throw new ArgumentException(nameof(eventStore)); }
public MartenEventSourcedRepository(IDocumentSession documentSession, MartenEventStore eventStore, IAggregateEventsPublisher aggregateEventsPublisher) { this.documentSession = documentSession ?? throw new ArgumentException(nameof(documentSession)); this.eventStore = eventStore ?? throw new ArgumentException(nameof(eventStore)); this.aggregateEventsPublisher = aggregateEventsPublisher ?? throw new ArgumentException(nameof(aggregateEventsPublisher)); }