Beispiel #1
0
        public EventLocation(IEnumerable <EventsPublishedByService> allServices, EventsSubscribedByService eventsSubscribedByService)
        {
            var readModels        = eventsSubscribedByService.ReadModelSubcriptions.ToList();
            var handleAsyncEvents = eventsSubscribedByService.Events.ToList();

            UnresolvedEventSubscriptions    = handleAsyncEvents;
            UnresolvedReadModeSubscriptions = readModels;

            foreach (var service in allServices)
            {
                var relevantEventsOfService = handleAsyncEvents.Where(ev => service.PublishedEventTypes.Contains(ev)).ToList();
                var relevantEvents          = relevantEventsOfService.Select(relevantEvent =>
                {
                    var notFoundProperties = GetDiffOfProperties(relevantEvent, service);
                    return(new EventSchema(relevantEvent.Name, notFoundProperties));
                }).ToList();

                var relevantReadModelsService = readModels.Where(r => service.PublishedEventTypes.Contains(r.GetsCreatedOn)).ToList();
                var relevantReadModels        = relevantReadModelsService.Select(readModel =>
                {
                    var createdEvent       = readModel.GetsCreatedOn;
                    var notFoundProperties = GetDiffOfProperties(createdEvent, service);

                    return(new ReadModelSubscription(
                               readModel.ReadModelName,
                               new EventSchema(createdEvent.Name, notFoundProperties)));
                }).ToList();

                if (!relevantEvents.Any() && !relevantReadModels.Any())
                {
                    continue;
                }

                SetDomainEventLocation(MicrowaveServiceNode.Create(service.ServiceEndPoint,
                                                                   relevantEvents,
                                                                   relevantReadModels));

                UnresolvedEventSubscriptions    = UnresolvedEventSubscriptions.Except(relevantEvents);
                UnresolvedReadModeSubscriptions = UnresolvedReadModeSubscriptions.Except(relevantReadModels);
            }
        }
Beispiel #2
0
 public EventLocationFake() : base(new List <MicrowaveServiceNode>
 {
     MicrowaveServiceNode.Create(new ServiceEndPoint(new Uri("http://luls.de/")),
                                 new List <EventSchema>
     {
         new EventSchema(nameof(Ev1))
     }, new List <ReadModelSubscription>()),
     MicrowaveServiceNode.Create(new ServiceEndPoint(new Uri("http://troll.de/")),
                                 new List <EventSchema>
     {
         new EventSchema(nameof(Ev2))
     }, new List <ReadModelSubscription>()),
     MicrowaveServiceNode.Create(new ServiceEndPoint(new Uri("http://troll2.de/")),
                                 new List <EventSchema>(),
                                 new List <ReadModelSubscription>
     {
         new ReadModelSubscription(nameof(IdQuery), new EventSchema(nameof(Ev2)))
     })
 }, new List <EventSchema>(), new List <ReadModelSubscription>())
 {
 }
Beispiel #3
0
        public async Task <EventLocation> GetEventLocation()
        {
            if (_cache.HasValue)
            {
                return(_cache.GetValue());
            }
            var mongoCollection = _database.GetCollection <EventLocationDbo>(StatusDbName);
            var location        = await mongoCollection.FindSync(e => e.Id == nameof(EventLocation)).SingleOrDefaultAsync();

            return(location == null?EventLocation.Default() : new EventLocation(location.Services.Select(s =>
                                                                                                         MicrowaveServiceNode.Create(s.ServiceEndPoint, s.SubscribedEvents, s.ReadModels)), location
                                                                                .UnresolvedEventSubscriptions, location.UnresolvedReadModeSubscriptions));
        }