// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddHttpClient(); services.AddControllers().AddNewtonsoftJson(); services.AddSingleton <IMetricFormatter <string>, LineFormatter>(); services.AddSingleton <IMetricConverter, MetricConverter>(); services.AddSingleton(provider => { var influxDbConfig = new VictoriaConfig(); Configuration.GetSection("VictoriaMetrics").Bind(influxDbConfig); return(influxDbConfig); }); services.AddSingleton(provider => { var workerConfig = new WorkerConfig(); Configuration.GetSection("Worker").Bind(workerConfig); return(workerConfig); }); services.AddHttpClient <IVictoriaMetricClient, VictoriaMetricClient>() .SetHandlerLifetime(TimeSpan.FromHours(1)) //Set lifetime to five minutes .AddPolicyHandler(GetRetryPolicy()); services.AddSingleton <IIngestWorker, IngestWorker>(); }
public VictoriaMetricClient(IMetricFormatter <string> metricFormatter, VictoriaConfig config, IMetricConverter converter, HttpClient httpClient) { _metricFormatter = metricFormatter; _converter = converter; _httpClient = httpClient; _httpClient.BaseAddress = new Uri(config.Uri); _chunkSize = config.ChunkSize < 50 ? 50 : config.ChunkSize; }