Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
        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);
            }
        }