Beispiel #1
0
        public MessageProcessingBehaviourPipeline Build(IServiceProvider provider)
        {
            var pipeline = new MessageProcessingBehaviourPipeline();

            foreach (var messagePipelineBehaviourType in _messagePipelineBehaviourTypes)
            {
                pipeline.AddBehaviour((IMessageProcessingBehaviour)provider.GetService(messagePipelineBehaviourType));
            }
            return(pipeline);
        }
Beispiel #2
0
        public MessageProcessingBehaviourPipeline Build(IContext ctx)
        {
            var pipeline = new MessageProcessingBehaviourPipeline();

            foreach (var messagePipelineBehaviourType in _messagePipelineBehaviourTypes)
            {
                pipeline.AddBehaviour((IMessageProcessingBehaviour)ctx.GetInstance(messagePipelineBehaviourType));
            }
            return(pipeline);
        }
Beispiel #3
0
        public CircuitBreakerTests()
        {
            _messageContext = new MessageContext
            {
                Message         = new Message(),
                MessageReceiver = Substitute.For <IMessageReceiver>()
            };

            var config = new SubscriberConfiguration
            {
                SubscriberName = "TestSubscriber"
            };

            _events = Substitute.For <ICircuitBreakerEvents>();

            var circuitBreakerOptions = new CircuitBreakerBatchProcessingBehaviour.CircuitBreakerOptions(1, exception => false);

            circuitBreakerOptions.CircuitBroken += _events.Broken;
            circuitBreakerOptions.CircuitReset  += _events.Reset;
            circuitBreakerOptions.CircuitTest   += _events.TestCircuit;

            _circuitBreakerBatchProcessingBehaviour = new CircuitBreakerBatchProcessingBehaviour(Substitute.For <ILogger <CircuitBreakerBatchProcessingBehaviour> >(),
                                                                                                 config, circuitBreakerOptions);

            _batchProcessingBehaviourPipeline = new BatchProcessingBehaviourPipeline()
                                                .AddBehaviour(_circuitBreakerBatchProcessingBehaviour)
                                                .AddBehaviour(new DefaultBatchProcessingBehaviour(Substitute.For <ILogger <DefaultBatchProcessingBehaviour> >(), config));

            _mockHandleMessageBehaviour = new MockHandleMessageBehaviour();
            var circuitBreakerMessageProcessingBehaviour = new CircuitBreakerMessageProcessingBehaviour(_circuitBreakerBatchProcessingBehaviour);

            _messageProcessingPipeline = new MessageProcessingBehaviourPipeline()
                                         .AddBehaviour(new DefaultMessageProcessingBehaviour(Substitute.For <ILogger <DefaultMessageProcessingBehaviour> >(), config))
                                         .AddBehaviour(circuitBreakerMessageProcessingBehaviour)
                                         .AddBehaviour(_mockHandleMessageBehaviour);
        }
Beispiel #4
0
 public static MessageProcessingBehaviourPipeline AddBehaviour <T>(this MessageProcessingBehaviourPipeline pipleline, IContext context) where T : IMessageProcessingBehaviour
 {
     return(pipleline.AddBehaviour(context.GetInstance <T>()));
 }
Beispiel #5
0
 public static MessageProcessingBehaviourPipeline AddBehaviour <T>(this MessageProcessingBehaviourPipeline pipleline, IServiceProvider provider) where T : IMessageProcessingBehaviour
 {
     return(pipleline.AddBehaviour(provider.GetService <T>()));
 }
 public MessageProcessor(IMessageDependencyResolver messageDependencyResolver, MessageProcessingBehaviourPipeline pipeline, ILogger <MessageProcessor> logger)
 {
     _messageDependencyResolver = messageDependencyResolver;
     _pipeline   = pipeline;
     this.logger = logger;
 }