Exemplo n.º 1
0
        /// <summary>
        /// Registers all the necessary components to use the low level HareDu Broker, Diagnostic, and Snapshotting APIs.
        /// </summary>
        /// <param name="services"></param>
        /// <param name="settingsFile">The full path of where the configuration settings file is located.</param>
        /// <param name="configSection">The section found within the configuration file.</param>
        /// <returns></returns>
        public static IServiceCollection AddHareDu(this IServiceCollection services, string settingsFile, string configSection)
        {
            var internalConfig = new InternalHareDuConfig();

            IConfiguration configuration = new ConfigurationBuilder()
                                           .AddJsonFile(settingsFile, false)
                                           .Build();

            configuration.Bind(configSection, internalConfig);

            HareDuConfig config = ConfigMapper.Map(internalConfig);

            services.AddSingleton(config);
            services.AddSingleton <IBrokerObjectFactory, BrokerObjectFactory>();
            services.AddSingleton <IScanner, Scanner>();
            services.AddSingleton <IKnowledgeBaseProvider, KnowledgeBaseProvider>();
            services.AddSingleton <IScannerFactory, ScannerFactory>();
            services.AddSingleton <IScannerResultAnalyzer, ScannerResultAnalyzer>();
            services.AddSingleton <ISnapshotFactory>(x => new SnapshotFactory(x.GetService <IBrokerObjectFactory>()));
            services.AddSingleton <ISnapshotWriter, SnapshotWriter>();
            services.AddSingleton <IDiagnosticReportFormatter, DiagnosticReportTextFormatter>();
            services.AddSingleton <IDiagnosticWriter, DiagnosticWriter>();

            return(services);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Registers all the necessary components to use the low level HareDu Broker, Diagnostic, and Snapshotting APIs.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="settingsFile">The full path of where the configuration settings file is located.</param>
        /// <param name="configSection">The section found within the configuration file.</param>
        /// <returns></returns>
        public static ContainerBuilder AddHareDu(this ContainerBuilder builder, string settingsFile, string configSection)
        {
            builder.Register(x =>
            {
                var internalConfig = new InternalHareDuConfig();

                IConfiguration configuration = new ConfigurationBuilder()
                                               .AddJsonFile(settingsFile, false)
                                               .Build();

                configuration.Bind(configSection, internalConfig);

                HareDuConfig config = ConfigMapper.Map(internalConfig);

                return(config);
            })
            .SingleInstance();

            builder.RegisterType <BrokerObjectFactory>()
            .As <IBrokerObjectFactory>()
            .SingleInstance();

            builder.RegisterType <Scanner>()
            .As <IScanner>()
            .SingleInstance();

            builder.RegisterType <KnowledgeBaseProvider>()
            .As <IKnowledgeBaseProvider>()
            .SingleInstance();

            builder.RegisterType <ScannerFactory>()
            .As <IScannerFactory>()
            .SingleInstance();

            builder.RegisterType <ScannerResultAnalyzer>()
            .As <IScannerResultAnalyzer>()
            .SingleInstance();

            builder.RegisterType <SnapshotWriter>()
            .As <ISnapshotWriter>()
            .SingleInstance();

            builder.RegisterType <DiagnosticReportTextFormatter>()
            .As <IDiagnosticReportFormatter>()
            .SingleInstance();

            builder.RegisterType <DiagnosticWriter>()
            .As <IDiagnosticWriter>()
            .SingleInstance();

            builder.Register(x => new SnapshotFactory(x.Resolve <IBrokerObjectFactory>()))
            .As <ISnapshotFactory>()
            .SingleInstance();

            return(builder);
        }
Exemplo n.º 3
0
        public void Init()
        {
            var services = new ServiceCollection();

            services.AddSingleton <IKnowledgeBaseProvider, KnowledgeBaseProvider>();

            var internalConfig = new InternalHareDuConfig();

            IConfiguration configuration = new ConfigurationBuilder()
                                           .AddJsonFile($"{TestContext.CurrentContext.TestDirectory}/appsettings.json", false)
                                           .Build();

            configuration.Bind("HareDuConfig", internalConfig);

            HareDuConfig config = ConfigMapper.Map(internalConfig);

            services.AddSingleton(config);

            _provider = services.BuildServiceProvider();

            var knowledgeBaseProvider = _provider.GetService <IKnowledgeBaseProvider>();

            _probes = new List <DiagnosticProbe>
            {
                new HighConnectionCreationRateProbe(config.Diagnostics, knowledgeBaseProvider),
                new HighConnectionClosureRateProbe(config.Diagnostics, knowledgeBaseProvider),
                new UnlimitedPrefetchCountProbe(knowledgeBaseProvider),
                new ChannelThrottlingProbe(knowledgeBaseProvider),
                new ChannelLimitReachedProbe(knowledgeBaseProvider),
                new BlockedConnectionProbe(knowledgeBaseProvider),
                new QueueGrowthProbe(knowledgeBaseProvider),
                new MessagePagingProbe(knowledgeBaseProvider),
                new RedeliveredMessagesProbe(config.Diagnostics, knowledgeBaseProvider),
                new ConsumerUtilizationProbe(config.Diagnostics, knowledgeBaseProvider),
                new UnroutableMessageProbe(knowledgeBaseProvider),
                new QueueLowFlowProbe(config.Diagnostics, knowledgeBaseProvider),
                new QueueNoFlowProbe(knowledgeBaseProvider),
                new QueueHighFlowProbe(config.Diagnostics, knowledgeBaseProvider),
                new RuntimeProcessLimitProbe(config.Diagnostics, knowledgeBaseProvider),
                new SocketDescriptorThrottlingProbe(config.Diagnostics, knowledgeBaseProvider),
                new NetworkPartitionProbe(knowledgeBaseProvider),
                new MemoryAlarmProbe(knowledgeBaseProvider),
                new DiskAlarmProbe(knowledgeBaseProvider),
                new AvailableCpuCoresProbe(knowledgeBaseProvider),
                new FileDescriptorThrottlingProbe(config.Diagnostics, knowledgeBaseProvider)
            };
        }
Exemplo n.º 4
0
        public void Init()
        {
            var services = new ServiceCollection();

            services.AddSingleton <IKnowledgeBaseProvider, KnowledgeBaseProvider>();

            var internalConfig = new InternalHareDuConfig();

            IConfiguration configuration = new ConfigurationBuilder()
                                           .AddJsonFile($"{TestContext.CurrentContext.TestDirectory}/appsettings.json", false)
                                           .Build();

            configuration.Bind("HareDuConfig", internalConfig);

            HareDuConfig config = ConfigMapper.Map(internalConfig);

            services.AddSingleton(config);

            _provider = services.BuildServiceProvider();
        }
Exemplo n.º 5
0
 public static HareDuConfig Map(InternalHareDuConfig config) => new HareDuConfigImpl(config);
Exemplo n.º 6
0
 public HareDuConfigImpl(InternalHareDuConfig config)
 {
     Broker      = new BrokerConfigImpl(config.Broker);
     Diagnostics = new DiagnosticsConfigImpl(config.Diagnostics);
 }