/// <inheritdoc cref="IStartable.Start"/>
        public void Start()
        {
            var rabbitMqSubscriptionSettings = RabbitMqSubscriptionSettings.ForSubscriber(
                _connectionString,
                _exchangeName,
                _queueName);

            if (_isDurable)
            {
                rabbitMqSubscriptionSettings = rabbitMqSubscriptionSettings.MakeDurable();
            }

            _subscriber = new RabbitMqSubscriber <TMessage>(
                _logFactory,
                rabbitMqSubscriptionSettings,
                new ResilientErrorHandlingStrategy(
                    _logFactory,
                    rabbitMqSubscriptionSettings,
                    TimeSpan.FromSeconds(10),
                    next: new DeadQueueErrorHandlingStrategy(_logFactory, rabbitMqSubscriptionSettings)))
                          .SetMessageDeserializer(new JsonMessageDeserializer <TMessage>())
                          .SetPrefetchCount(_prefetchCount)
                          .Subscribe(ProcessMessageAsync)
                          .CreateDefaultBinding()
                          .Start();
        }
 /// <inheritdoc cref="IStopable.Stop"/>
 public void Stop()
 {
     if (_subscriber != null)
     {
         _subscriber.Stop();
         _subscriber.Dispose();
         _subscriber = null;
     }
 }
Esempio n. 3
0
        /// <inheritdoc cref="IStartStop.Stop"/>
        public void Stop()
        {
            var subscriber = _subscriber;

            if (_subscriber == null)
            {
                return;
            }

            _subscriber = null;

            subscriber.Stop();
            subscriber.Dispose();
        }
Esempio n. 4
0
 /// <inheritdoc cref="IStartable.Start"/>
 public void Start()
 {
     _subscriber = new RabbitMqSubscriber <TMessage>(
         _loggerFactory.CreateLogger <RabbitMqSubscriber <TMessage> >(),
         _settings)
                   .UseMiddleware(
         new DeadQueueMiddleware <TMessage>(_loggerFactory.CreateLogger <DeadQueueMiddleware <TMessage> >()))
                   .UseMiddleware(
         new ResilientErrorHandlingMiddleware <TMessage>(
             _loggerFactory.CreateLogger <ResilientErrorHandlingMiddleware <TMessage> >(),
             TimeSpan.FromSeconds(10)))
                   .SetMessageDeserializer(new JsonMessageDeserializer <TMessage>())
                   .SetPrefetchCount(_prefetchCount)
                   .Subscribe(ProcessMessageAsync)
                   .CreateDefaultBinding();
     if (_sendTelemetry)
     {
         _subscriber = _subscriber.UseMiddleware(new TelemetryMiddleware <TMessage>());
     }
     _subscriber.Start();
 }