Ejemplo n.º 1
0
            public MoveMessageErrorPolicyImplementation(
                IProducerEndpoint endpoint,
                Action <IOutboundEnvelope, Exception>?transformationAction,
                int?maxFailedAttempts,
                ICollection <Type> excludedExceptions,
                ICollection <Type> includedExceptions,
                Func <IRawInboundEnvelope, Exception, bool>?applyRule,
                Func <IRawInboundEnvelope, object>?messageToPublishFactory,
                IServiceProvider serviceProvider,
                IInboundLogger <MoveMessageErrorPolicy> logger)
                : base(
                    maxFailedAttempts,
                    excludedExceptions,
                    includedExceptions,
                    applyRule,
                    messageToPublishFactory,
                    serviceProvider,
                    logger)
            {
                _endpoint             = Check.NotNull(endpoint, nameof(endpoint));
                _transformationAction = transformationAction;
                _logger = logger;

                _producer = serviceProvider.GetRequiredService <IBrokerCollection>().GetProducer(endpoint);
            }
Ejemplo n.º 2
0
            public ErrorPolicyChainImplementation(
                IEnumerable <ErrorPolicyImplementation> policies,
                IInboundLogger <ErrorPolicyChainImplementation> logger)
            {
                _policies = Check.NotNull(policies, nameof(policies)).ToList();
                Check.HasNoNulls(_policies, nameof(policies));

                _logger = Check.NotNull(logger, nameof(logger));
            }
Ejemplo n.º 3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Consumer{TBroker, TEndpoint, TOffset}" /> class.
 /// </summary>
 /// <param name="broker">
 ///     The <see cref="IBroker" /> that is instantiating the consumer.
 /// </param>
 /// <param name="endpoint">
 ///     The endpoint to be consumed.
 /// </param>
 /// <param name="behaviorsProvider">
 ///     The <see cref="IBrokerBehaviorsProvider{TBehavior}" />.
 /// </param>
 /// <param name="serviceProvider">
 ///     The <see cref="IServiceProvider" /> to be used to resolve the needed services.
 /// </param>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 protected Consumer(
     TBroker broker,
     TEndpoint endpoint,
     IBrokerBehaviorsProvider <IConsumerBehavior> behaviorsProvider,
     IServiceProvider serviceProvider,
     IInboundLogger <Consumer <TBroker, TEndpoint, TIdentifier> > logger)
     : base(broker, endpoint, behaviorsProvider, serviceProvider, logger)
 {
     _logger = logger;
 }
Ejemplo n.º 4
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="MqttConsumer" /> class.
        /// </summary>
        /// <param name="broker">
        ///     The <see cref="IBroker" /> that is instantiating the consumer.
        /// </param>
        /// <param name="endpoint">
        ///     The endpoint to be consumed.
        /// </param>
        /// <param name="behaviorsProvider">
        ///     The <see cref="IBrokerBehaviorsProvider{TBehavior}" />.
        /// </param>
        /// <param name="serviceProvider">
        ///     The <see cref="IServiceProvider" /> to be used to resolve the needed services.
        /// </param>
        /// <param name="logger">
        ///     The <see cref="IInboundLogger{TCategoryName}" />.
        /// </param>
        public MqttConsumer(
            MqttBroker broker,
            MqttConsumerEndpoint endpoint,
            IBrokerBehaviorsProvider <IConsumerBehavior> behaviorsProvider,
            IServiceProvider serviceProvider,
            IInboundLogger <MqttConsumer> logger)
            : base(broker, endpoint, behaviorsProvider, serviceProvider, logger)
        {
            Check.NotNull(serviceProvider, nameof(serviceProvider));
            _logger = Check.NotNull(logger, nameof(logger));

            _clientFactory = serviceProvider.GetRequiredService <IMqttClientsCache>();
        }
Ejemplo n.º 5
0
        public ConsumerChannelManager(
            MqttClientWrapper mqttClientWrapper,
            IInboundLogger <IConsumer> logger)
        {
            _mqttClientWrapper = Check.NotNull(mqttClientWrapper, nameof(mqttClientWrapper));
            _logger            = Check.NotNull(logger, nameof(logger));

            _channel = CreateBoundedChannel();

            _readCancellationTokenSource = new CancellationTokenSource();
            _readTaskCompletionSource    = new TaskCompletionSource <bool>();

            mqttClientWrapper.MqttClient.ApplicationMessageReceivedHandler = this;
        }
Ejemplo n.º 6
0
        public InboundLoggerTests()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddLoggerSubstitute(LogLevel.Trace)
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddKafka()));

            _loggerSubstitute =
                (LoggerSubstitute <InboundLoggerTests>)serviceProvider
                .GetRequiredService <ILogger <InboundLoggerTests> >();

            _inboundLogger = serviceProvider
                             .GetRequiredService <IInboundLogger <InboundLoggerTests> >();
        }
        public FatalExceptionLoggerConsumerBehaviorTests()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddLoggerSubstitute(LogLevel.Trace)
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>()));

            _loggerSubstitute =
                (LoggerSubstitute <FatalExceptionLoggerConsumerBehavior>)serviceProvider
                .GetRequiredService <ILogger <FatalExceptionLoggerConsumerBehavior> >();

            _inboundLogger = serviceProvider
                             .GetRequiredService <IInboundLogger <FatalExceptionLoggerConsumerBehavior> >();
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="ErrorPolicyImplementation" /> class.
        /// </summary>
        /// <param name="maxFailedAttempts">
        ///     The number of times this policy should be applied to the same message in case of multiple failed
        ///     attempts.
        /// </param>
        /// <param name="excludedExceptions">
        ///     The collection of exception types this policy doesn't have to be applied to.
        /// </param>
        /// <param name="includedExceptions">
        ///     The collection of exception types this policy have to be applied to.
        /// </param>
        /// <param name="applyRule">
        ///     The custom apply rule function.
        /// </param>
        /// <param name="messageToPublishFactory">
        ///     The factory that builds the message to be published after the policy
        ///     is applied.
        /// </param>
        /// <param name="serviceProvider">
        ///     The <see cref="IServiceProvider" />.
        /// </param>
        /// <param name="logger">
        ///     The <see cref="IInboundLogger{TCategoryName}" />.
        /// </param>
        protected ErrorPolicyImplementation(
            int?maxFailedAttempts,
            ICollection <Type> excludedExceptions,
            ICollection <Type> includedExceptions,
            Func <IRawInboundEnvelope, Exception, bool>?applyRule,
            Func <IRawInboundEnvelope, object>?messageToPublishFactory,
            IServiceProvider serviceProvider,
            IInboundLogger <ErrorPolicyBase> logger)
        {
            _maxFailedAttempts       = maxFailedAttempts;
            _excludedExceptions      = Check.NotNull(excludedExceptions, nameof(excludedExceptions));
            _includedExceptions      = Check.NotNull(includedExceptions, nameof(includedExceptions));
            _applyRule               = applyRule;
            _messageToPublishFactory = messageToPublishFactory;

            _serviceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider));
            _logger          = Check.NotNull(logger, nameof(logger));
        }
 public StopConsumerErrorPolicyImplementation(
     int?maxFailedAttempts,
     ICollection <Type> excludedExceptions,
     ICollection <Type> includedExceptions,
     Func <IRawInboundEnvelope, Exception, bool>?applyRule,
     Func <IRawInboundEnvelope, Exception, object?>?messageToPublishFactory,
     IServiceProvider serviceProvider,
     IInboundLogger <StopConsumerErrorPolicy> logger)
     : base(
         maxFailedAttempts,
         excludedExceptions,
         includedExceptions,
         applyRule,
         messageToPublishFactory,
         serviceProvider,
         logger)
 {
 }
        public ValidatorConsumerBehaviorTests()
        {
            var services = new ServiceCollection();

            services
            .AddLoggerSubstitute()
            .AddSilverback()
            .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>());

            _serviceProvider = services.BuildServiceProvider();

            _loggerSubstitute =
                (LoggerSubstitute <ValidatorConsumerBehavior>)_serviceProvider
                .GetRequiredService <ILogger <ValidatorConsumerBehavior> >();

            _inboundLogger = _serviceProvider
                             .GetRequiredService <IInboundLogger <ValidatorConsumerBehavior> >();
        }
Ejemplo n.º 11
0
 public RetryErrorPolicyImplementation(
     TimeSpan initialDelay,
     TimeSpan delayIncrement,
     int?maxFailedAttempts,
     ICollection <Type> excludedExceptions,
     ICollection <Type> includedExceptions,
     Func <IRawInboundEnvelope, Exception, bool>?applyRule,
     Func <IRawInboundEnvelope, object>?messageToPublishFactory,
     IServiceProvider serviceProvider,
     IInboundLogger <RetryErrorPolicy> logger)
     : base(
         maxFailedAttempts,
         excludedExceptions,
         includedExceptions,
         applyRule,
         messageToPublishFactory,
         serviceProvider,
         logger)
 {
     _initialDelay   = initialDelay;
     _delayIncrement = delayIncrement;
     _logger         = logger;
 }
Ejemplo n.º 12
0
        public IntegrationLoggingBenchmark()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(broker => broker.AddKafka()));

            _inboundLogger =
                serviceProvider.GetRequiredService <IInboundLogger <IntegrationLoggingBenchmark> >();

            _outboundLogger =
                serviceProvider.GetRequiredService <IOutboundLogger <IntegrationLoggingBenchmark> >();

            _inboundEnvelope = new RawInboundEnvelope(
                Array.Empty <byte>(),
                new MessageHeaderCollection
            {
                new("Test", "Test"),
                new(DefaultMessageHeaders.FailedAttempts, "1"),
                new(DefaultMessageHeaders.MessageType, "Something.Xy"),
                new(DefaultMessageHeaders.MessageId, "1234"),
                new(KafkaMessageHeaders.KafkaMessageKey, "key1234")
            },
Ejemplo n.º 13
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="DeserializerConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public DeserializerConsumerBehavior(IInboundLogger <DeserializerConsumerBehavior> logger)
 {
     _logger = Check.NotNull(logger, nameof(logger));
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="ExactlyOnceGuardConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public ExactlyOnceGuardConsumerBehavior(IInboundLogger <ExactlyOnceGuardConsumerBehavior> logger)
 {
     _logger = logger;
 }
Ejemplo n.º 15
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="PublisherConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public PublisherConsumerBehavior(IInboundLogger <PublisherConsumerBehavior> logger)
 {
     _logger = logger;
 }
Ejemplo n.º 16
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="FatalExceptionLoggerConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public FatalExceptionLoggerConsumerBehavior(
     IInboundLogger <FatalExceptionLoggerConsumerBehavior> logger)
 {
     _logger = logger;
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="TransactionHandlerConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public TransactionHandlerConsumerBehavior(IInboundLogger <TransactionHandlerConsumerBehavior> logger)
 {
     _logger = logger;
 }
Ejemplo n.º 18
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="ValidatorConsumerBehavior" /> class.
 /// </summary>
 /// <param name="logger">
 ///     The <see cref="IInboundLogger{TCategoryName}" />.
 /// </param>
 public ValidatorConsumerBehavior(IInboundLogger <ValidatorConsumerBehavior> logger)
 {
     _logger = Check.NotNull(logger, nameof(logger));
 }