public DomainEventPublisher(IMessageProducer messageProducer, IEventTypeNamingStrategy eventTypeNamingStrategy, ILogger <DomainEventPublisher> logger) { _messageProducer = messageProducer; _eventTypeNamingStrategy = eventTypeNamingStrategy; _logger = logger; }
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))); }
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()); }