Example #1
0
        public Task HandleAsync(IReadOnlyCollection <IDomainEvent> domainEvents, CancellationToken cancellationToken)
        {
            var rabbitMqMessages = domainEvents.Select(e => _rabbitMqMessageFactory.CreateMessage(e)).ToList();

            // return _rabbitMqSubscriber.SubscribeAsync( rabbitMqMessages, cancellationToken);
            return(Task.FromResult(0));
        }
        private Task <int> SubscribeAsync(IModel model, string exchange, string queue, Action <IList <IDomainEvent>, IDomainEventPublisher> action, IDomainEventPublisher domainEventPublisher, CancellationToken token)
        {
            _log.Verbose(
                "Subscribing to {0} exchange and {1} to RabbitMQ host '{2}'",
                exchange,
                queue,
                _configuration.Uri.Host);
            try
            {
                //model.QueueDeclare(queue: queue, durable: true);
                model.QueueDeclare(queue: queue, durable: true,
                                   exclusive: false, autoDelete: false, arguments: null);
                model.ExchangeDeclare(exchange: exchange, type: "topic", durable: true);

                model.QueueBind(queue: queue, exchange: exchange, routingKey: "eventflow.domainevent.employee.employee-added-event.1");

                EventingBasicConsumer consumer = new EventingBasicConsumer(model);
                consumer.Received += (ch, ea) =>
                {
                    var rabbitMqMessage = _rabbitMqMessageFactory.CreateMessage(ea);
                    var domainEvent     = _rabbitMqMessageFactory.CreateDomainEvent(rabbitMqMessage);

                    action(new List <IDomainEvent>()
                    {
                        domainEvent
                    }, domainEventPublisher);

                    model.BasicAck(ea.DeliveryTag, false);
                };
                model.BasicConsume(queue, false, "", false, false, null, consumer);
            }
            catch (Exception exp)
            {
                _log.Verbose(
                    "Subscribing to {0} exchange and {1} to RabbitMQ host '{2}' Exception : {3}",
                    exchange,
                    queue,
                    _configuration.Uri.Host, exp.Message);
            }

            return(Task.FromResult(0));
        }
        public Task HandleAsync(IReadOnlyCollection <IDomainEvent> domainEvents, CancellationToken cancellationToken)
        {
            var rabbitMqMessages = domainEvents.Select(e => _rabbitMqMessageFactory.CreateMessage(e)).ToList();

            return(_rabbitMqPublisher.PublishAsync(rabbitMqMessages, cancellationToken));
        }