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 }); } }
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(); }