public DomainEventPublisher(IMessageProducer messageProducer, IEventTypeNamingStrategy eventTypeNamingStrategy,
                             ILogger <DomainEventPublisher> logger)
 {
     _messageProducer         = messageProducer;
     _eventTypeNamingStrategy = eventTypeNamingStrategy;
     _logger = logger;
 }
Exemple #2
0
        public bool Handles(IMessage message, IEventTypeNamingStrategy eventTypeNamingStrategy)
        {
            string eventTypeName = eventTypeNamingStrategy.GetEventTypeName(EventType);

            return(AggregateType.Equals(message.GetRequiredHeader(EventMessageHeaders.AggregateType)) &&
                   String.Equals(eventTypeName, message.GetRequiredHeader(EventMessageHeaders.EventType)));
        }
Exemple #3
0
 public DomainEventDispatcher(string subscriberId, DomainEventHandlers domainEventHandlers,
                              IMessageConsumer messageConsumer, IEventTypeNamingStrategy eventTypeNamingStrategy,
                              ILogger <DomainEventDispatcher> logger)
 {
     _subscriberId            = subscriberId;
     _domainEventHandlers     = domainEventHandlers;
     _messageConsumer         = messageConsumer;
     _eventTypeNamingStrategy = eventTypeNamingStrategy;
     _logger            = logger;
     _dispatcherContext = $"SubscriberId='{subscriberId}', " +
                          $"DomainEventHandlers for'{String.Join(",", domainEventHandlers.GetAggregateTypes())}'";
 }
 public DomainEventHandler FindTargetMethod(IMessage message, IEventTypeNamingStrategy eventTypeNamingStrategy)
 {
     return(Handlers.FirstOrDefault(h => h.Handles(message, eventTypeNamingStrategy)));
 }
        public static IMessage MakeMessageForDomainEvent(string aggregateType, object aggregateId,
                                                         IDictionary <string, string> headers, IDomainEvent @event, IEventTypeNamingStrategy eventTypeNamingStrategy)
        {
            string aggregateIdAsString = aggregateId.ToString();
            string eventType           = eventTypeNamingStrategy.GetEventTypeName(@event.GetType());

            return(MessageBuilder
                   .WithPayload(JsonMapper.ToJson(@event))
                   .WithExtraHeaders("", headers)
                   .WithHeader(MessageHeaders.PartitionId, aggregateIdAsString)
                   .WithHeader(EventMessageHeaders.AggregateId, aggregateIdAsString)
                   .WithHeader(EventMessageHeaders.AggregateType, aggregateType)
                   .WithHeader(EventMessageHeaders.EventType, eventType)
                   .Build());
        }