示例#1
0
        private static ServiceProvider InitialiseIoC()
        {
            var connection = "Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOURKEY";
            var topicName  = "pat";

            var subscriberConfiguration = new SubscriberConfiguration
            {
                ConnectionStrings   = new[] { connection },
                TopicName           = topicName,
                SubscriberName      = "PatExampleSubscriber",
                UseDevelopmentTopic = false
            };

            var patLiteOptions = new PatLiteOptionsBuilder(subscriberConfiguration)
                                 .DefineMessagePipeline
                                 .With <NonTransientMessageFailureProcessingBehaviour>()
                                 .With <MonitoringMessageProcessingBehaviour>()
                                 .With <InvokeHandlerBehaviour>()
                                 .Build();

            var serviceProvider = new ServiceCollection()
                                  .AddPatLite(patLiteOptions)
                                  .AddLogging(b => b.AddConsole())
                                  .AddTransient <IStatisticsReporter, StatisticsReporter>()
                                  .AddSingleton(new StatisticsReporterConfiguration())
                                  .AddHandlersFromAssemblyContainingType <FooHandler>()
                                  .BuildServiceProvider();

            return(serviceProvider);
        }
示例#2
0
        private static ServiceProvider InitialiseIoC()
        {
            var connection = "Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOURKEY";
            var topicName  = "pat";

            var subscriberConfiguration = new SubscriberConfiguration
            {
                ConnectionStrings   = new[] { connection },
                TopicName           = topicName,
                SubscriberName      = "PatExampleSubscriber",
                UseDevelopmentTopic = false
            };

            var patOptions = new PatLiteOptionsBuilder(subscriberConfiguration)
                             .UseDefaultPipelinesWithCircuitBreaker(
                sp =>
            {
                var monitoring = sp.GetRequiredService <CircuitBreakerMonitoring>();
                return(new CircuitBreakerBatchProcessingBehaviour.CircuitBreakerOptions(
                           circuitTestIntervalInSeconds: 30,
                           shouldCircuitBreak: IsCircuitBreakingException)
                {
                    CircuitBroken = (sender, args) => monitoring.CircuitBroken(),
                    CircuitReset = (sender, args) => monitoring.CircuitReset(),
                    CircuitTest = (sender, args) => monitoring.CircuitTest()
                });
            })
                             .Build();

            var serviceProvider = new ServiceCollection()
                                  .AddPatLite(patOptions)
                                  .AddLogging(b => b.AddConsole())
                                  .AddTransient <IStatisticsReporter, StatisticsReporter>()
                                  .AddSingleton(new StatisticsReporterConfiguration())
                                  .AddHandlersFromAssemblyContainingType <FooHandler>()
                                  .AddSingleton <CircuitBreakerMonitoring>()
                                  .BuildServiceProvider();

            return(serviceProvider);
        }