public static string Serialize(DomainEvent domainEvent)
        {
            if (domainEvent == null)
            {
                return("");
            }

            var attributes = domainEvent.ToPrimitives();

            attributes.Add("id", domainEvent.AggregateId);

            return(JsonSerializer.Serialize(new Dictionary <string, Dictionary <string, object> >
            {
                {
                    "data", new Dictionary <string, object>
                    {
                        { "id", domainEvent.EventId },
                        { "type", domainEvent.EventName() },
                        { "occurred_on", domainEvent.OccurredOn },
                        { "attributes", attributes }
                    }
                },
                { "meta", new Dictionary <string, object>() }
            }));
        }
 private async Task Publish(DomainEvent domainEvent)
 {
     try
     {
         var serializedDomainEvent = DomainEventJsonSerializer.Serialize(domainEvent);
         _rabbitMqPublisher.Publish(_exchangeName, domainEvent.EventName(), serializedDomainEvent);
     }
     catch (RabbitMQClientException e)
     {
         await _failOverPublisher.Publish(new List <DomainEvent> {
             domainEvent
         });
     }
 }
Example #3
0
        private async Task Publish(DomainEvent domainEvent)
        {
            var value = new DomainEventPrimitive
            {
                Id          = domainEvent.EventId,
                AggregateId = domainEvent.AggregateId,
                Body        = domainEvent.ToPrimitives(),
                Name        = domainEvent.EventName(),
                OccurredOn  = domainEvent.OccurredOn
            };

            await _context.Set <DomainEventPrimitive>().AddAsync(value);

            await _context.SaveChangesAsync();
        }