/// <summary> /// /// </summary> /// <param name="event"></param> /// <param name="cancellationToken">Propagates notification that operations should be canceled.</param> /// <returns></returns> public async Task Publish(DomainEvent @event, CancellationToken cancellationToken) { await _executeMiddlewaresService.ExecuteAsync(@event, cancellationToken); var eventAsString = _domainEventJsonSerializer.Serialize(@event); await _connectionMultiplexer.GetSubscriber().PublishAsync("*", eventAsString); }
private async Task Publish(DomainEventBase domainEvent) { try { var serializedDomainEvent = DomainEventJsonSerializer.Serialize(domainEvent); await Task.Run(() => _rabbitMqPublisher.Publish(_exchangeName, domainEvent.EventName(), serializedDomainEvent)); } catch (RabbitMQClientException ex) { throw new Exception(ex.Message); } }
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 }); } }
/// <summary> /// /// </summary> /// <param name="event"></param> /// <param name="cancellationToken">Propagates notification that operations should be canceled.</param> /// <returns></returns> public async Task Publish(DomainEvent @event, CancellationToken cancellationToken) { try { await _executeMiddlewaresService.ExecuteAsync(@event, cancellationToken); var serializedDomainEvent = _domainEventJsonSerializer.Serialize(@event); var channel = _config.Channel(); channel.ExchangeDeclare(_rabbitMqParams.Value.ExchangeName, ExchangeType.Topic); var body = Encoding.UTF8.GetBytes(serializedDomainEvent); var properties = channel.CreateBasicProperties(); properties.Headers = new Dictionary <string, object> { { HeaderReDelivery, 0 } }; channel.BasicPublish(_rabbitMqParams.Value.ExchangeName, @event.GetEventName(), properties, body); } catch (RabbitMQClientException) { //await _failOverPublisher.Publish(new List<DomainEvent> {domainEvent}, cancellationToken); } }