Пример #1
0
        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);
            }
        }
Пример #2
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);
                }
        }
Пример #3
0
 public MartenEventStoreTests()
 {
     Sut = new MartenEventStore(Session);
 }
Пример #4
0
 public MartenEventSourcedRepository(IDocumentSession documentSession, MartenEventStore eventStore)
 {
     this.documentSession = documentSession ?? throw new ArgumentException(nameof(documentSession));
     this.eventStore      = eventStore ?? throw new ArgumentException(nameof(eventStore));
 }
Пример #5
0
 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));
 }