public IDomainEvent CreateDomainEvent(RabbitMqMessage rabbitMqMessage) { var metadata = new Metadata(rabbitMqMessage.Headers); var domainEvent = _eventJsonSerializer.Deserialize( rabbitMqMessage.Message, metadata); _log.Verbose("Create Domain event {0}", domainEvent); return(domainEvent); }
public RabbitMqMessage CreateMessage(BasicDeliverEventArgs basicDeliverEvent) { byte[] body = basicDeliverEvent.Body.ToArray(); string serializedData = Encoding.UTF8.GetString(body); var exchange = new Exchange(basicDeliverEvent.Exchange); RoutingKey routingKey = new RoutingKey(basicDeliverEvent.RoutingKey); IReadOnlyDictionary <string, string> headers = basicDeliverEvent.BasicProperties.Headers.ToDictionary(kv => kv.Key, kv => Encoding.UTF8.GetString((byte[])kv.Value)); string eventId = headers["event_id"]; var rabbitMqMessage = new RabbitMqMessage( serializedData, headers, exchange, routingKey, new MessageId(eventId)); _log.Verbose("Create RabbitMQ message {0}", rabbitMqMessage); return(rabbitMqMessage); }
public RabbitMqMessage CreateMessage(IDomainEvent domainEvent) { var serializedEvent = _eventJsonSerializer.Serialize( domainEvent.GetAggregateEvent(), domainEvent.Metadata); var routingKey = new RoutingKey(string.Format( "eventflow.domainevent.{0}.{1}.{2}", domainEvent.Metadata[MetadataKeys.AggregateName].ToSlug(), domainEvent.Metadata.EventName.ToSlug(), domainEvent.Metadata.EventVersion)); var exchange = new Exchange(_rabbitMqConfiguration.Exchange); var rabbitMqMessage = new RabbitMqMessage( serializedEvent.SerializedData, domainEvent.Metadata, exchange, routingKey, new MessageId(domainEvent.Metadata[MetadataKeys.EventId])); _log.Verbose("Create RabbitMQ message {0}", rabbitMqMessage); return(rabbitMqMessage); }
public RabbitMqMessage CreateMessage(IDomainEvent domainEvent) { var serializedEvent = _eventJsonSerializer.Serialize( domainEvent.GetAggregateEvent(), domainEvent.Metadata); var routingKey = new RoutingKey(string.Format( "eventflow.domainevent.{0}.{1}.{2}", domainEvent.Metadata[MetadataKeys.AggregateName].ToSlug(), domainEvent.Metadata.EventName.ToSlug(), domainEvent.Metadata.EventVersion)); var exchange = new Exchange("eventflow"); var rabbitMqMessage = new RabbitMqMessage( serializedEvent.SerializedData, domainEvent.Metadata, exchange, routingKey, new MessageId(domainEvent.Metadata[MetadataKeys.EventId])); _log.Verbose("Create RabbitMQ message {0}", rabbitMqMessage); return rabbitMqMessage; }
protected virtual void PublishSingleMessage(IModel model, RabbitMqMessage message, byte[] bytes, IBasicProperties basicProperties) { // TODO: Evil or not evil? Do a Task.Run here? model.BasicPublish(message.Exchange.Value, message.RoutingKey.Value, false, basicProperties, bytes); }
private static void SendMessages( IRabbitMqPublisher rabbitMqPublisher, int count, Exchange exchange, RoutingKey routingKey, ConcurrentBag<Exception> exceptions) { var guid = Guid.NewGuid(); try { for (var i = 0; i < count; i++) { var rabbitMqMessage = new RabbitMqMessage( $"{guid}-{i}", new Metadata(), exchange, routingKey, new MessageId(Guid.NewGuid().ToString("D"))); rabbitMqPublisher.PublishAsync(CancellationToken.None, rabbitMqMessage).Wait(); } } catch (Exception e) { exceptions.Add(e); } }