예제 #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpContextAccessor();
            RegistraDependencias.Registrar(services);
            RegistrarHttpClients(services, configuration);
            services.AddApplicationInsightsTelemetry(configuration);
            var provider = services.BuildServiceProvider();

            //services.AdicionarRedis(configuration, provider.GetService<IServicoLog>());

            if (env.EnvironmentName != "teste-integrado")
            {
                services.AddRabbit();
            }

            services.AddHostedService <WorkerRabbitMQ>();


            // Teste para injeção do client de telemetria em classe estática

            var serviceProvider = services.BuildServiceProvider();
            var clientTelemetry = serviceProvider.GetService <TelemetryClient>();

            DapperExtensionMethods.Init(clientTelemetry);
            SentrySdk.Init(configuration.GetValue <string>("Sentry:DSN"));

            services.AddMemoryCache();
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpContextAccessor();
            ConfiguraVariaveisAmbiente(services);

            RegistraDependencias.Registrar(services, Configuration);

            RegistrarHttpClients(services, Configuration);

            services.AddRabbit(RabbitOptions);
            services.AddPolicies();
            services.AddHostedService <WorkerRabbitMQ>();

            ConfiguraRabbitParaLogs(services);

            var telemetriaOptions = ConfiguraTelemetria(services);
            var servicoTelemetria = new ServicoTelemetria(telemetriaOptions);

            DapperExtensionMethods.Init(servicoTelemetria);
            services.AddSingleton(servicoTelemetria);

            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                //c.AddServer(new OpenApiServer() { Description = "Dev", Url = "https://dev-gcasync.sme.prefeitura.sp.gov.br" });
                //TODO: Remover rota fixa

                c.SwaggerDoc("v1",
                             new OpenApiInfo
                {
                    Title       = "SME.GoogleClassroom.Worker.Rabbit",
                    Description = "Serviço de integração EOL com o Google Classroom",
                    Version     = "v1"
                });
                c.OperationFilter <AdicionaCabecalhoHttp>();

                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
            });

            var serviceProvider = services.BuildServiceProvider();
            var mediator        = serviceProvider.GetService <IMediator>();

            services.AddSingleton(mediator);

            services.AddMvc(options =>
            {
                options.EnableEndpointRouting = true;
                options.Filters.Add(new FiltroExcecoesAttribute(mediator));
            });

            services.UseMetricReporter();
        }
예제 #3
0
        private static async Task Main(string[] args)
        {
            // Run with console or service
            var asService = !(Debugger.IsAttached || args.Contains("--console"));

            var builder = new HostBuilder()
                          .ConfigureAppConfiguration((hostContext, config) =>
            {
                config.SetBasePath(Directory.GetCurrentDirectory());
                config.AddEnvironmentVariables();
            })
                          .ConfigureLogging((context, logging) =>
            {
                logging.AddConfiguration(context.Configuration);
                logging.AddSentry();
            })
                          .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService <WorkerService>();
                WorkerService.ConfigurarDependencias(hostContext.Configuration, services);
                WorkerService.Configurar(hostContext.Configuration, services);

                services.AddApplicationInsightsTelemetryWorkerService(hostContext.Configuration.GetValue <string>("ApplicationInsights__InstrumentationKey"));

                var provider = services.BuildServiceProvider();

                //services.AddSingleton<IConnectionMultiplexerSME>(
                //    new ConnectionMultiplexerSME(hostContext.Configuration.GetConnectionString("SGP_Redis"), provider.GetService<IServicoLog>()));

                // Teste para injeção do client de telemetria em classe estática                 ,

                var telemetryConfiguration = new Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration(hostContext.Configuration.GetValue <string>("ApplicationInsights:InstrumentationKey"));

                var telemetryClient = new TelemetryClient(telemetryConfiguration);

                DapperExtensionMethods.Init(telemetryClient);

                //
                services.AddMemoryCache();
            });

            builder.UseEnvironment(asService ? EnvironmentName.Production : EnvironmentName.Development);

            if (asService)
            {
                await builder.Build().RunAsync();
            }
            else
            {
                await builder.RunConsoleAsync();
            }
        }
예제 #4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCompression();

            var configTamanhoLimiteRequest = Configuration.GetSection("SGP_MaxRequestSizeBody").Value ?? "104857600";

            services.Configure <Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions>(options =>
            {
                options.Limits.MaxRequestBodySize = long.Parse(configTamanhoLimiteRequest);
            });

            services.Configure <BrotliCompressionProviderOptions>(options =>
            {
                options.Level = CompressionLevel.Fastest;
            });

            services.AddSingleton(Configuration);
            services.AddHttpContextAccessor();

            RegistraDependencias.Registrar(services);
            RegistraClientesHttp.Registrar(services, Configuration);
            RegistraAutenticacao.Registrar(services, Configuration);
            RegistrarMvc.Registrar(services, Configuration);
            RegistraDocumentacaoSwagger.Registrar(services);

            DefaultTypeMap.MatchNamesWithUnderscores = true;

            services.AddApplicationInsightsTelemetry(Configuration);

            var serviceProvider = services.BuildServiceProvider();

            Orquestrador.Inicializar(serviceProvider);



            //services.AdicionarRedis(Configuration, serviceProvider.GetService<IServicoLog>());

            if (Configuration.GetValue <bool>("FF_BackgroundEnabled", false))
            {
                Orquestrador.Registrar(new Processor(Configuration, "SGP_Postgres"));
                RegistraServicosRecorrentes.Registrar();
            }
            else
            {
                Orquestrador.Desativar();
            }

            services.AddHealthChecks()
            //.AddRedis(
            //     Configuration.GetConnectionString("SGP_Redis"),
            //     "Redis Cache",
            //     null,
            //     tags: new string[] { "db", "redis" })
            .AddNpgSql(
                Configuration.GetConnectionString("SGP_Postgres"),
                name: "Postgres")
            .AddCheck <ApiJuremaCheck>("API Jurema")
            .AddCheck <ApiEolCheck>("API EOL");

            services.Configure <RequestLocalizationOptions>(options =>
            {
                options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("pt-BR");
                options.SupportedCultures     = new List <CultureInfo> {
                    new CultureInfo("pt-BR"), new CultureInfo("pt-BR")
                };
            });

            if (_env.EnvironmentName != "teste-integrado")
            {
                services.AddRabbit();
            }

            // Teste para injeção do client de telemetria em classe estática


            var clientTelemetry = serviceProvider.GetService <TelemetryClient>();

            DapperExtensionMethods.Init(clientTelemetry);

            //

            services.AddMemoryCache();
        }