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