예제 #1
0
        /// <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
         });
     }
 }
예제 #4
0
        /// <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);
            }
        }