private void setTargetHealthSerive() { lock (obj) { //判断是否新增节点 int count = HealthServices.Except(TargetSpiderService.ServiceEntryies.Distinct()).Count(); if (count == 0) { return; } TargetSpiderService.ServiceEntryies.Clear(); var weights = HealthServices.Select(o => o.Weight).ToArray(); int maxFactor = maxCommonFactor(weights); foreach (var item in HealthServices) { int num = item.Weight / maxFactor; for (int i = 0; i < num; i++) { SpiderServiceEntry spiderServiceEntry = new SpiderServiceEntry(item.Url) { Weight = item.Weight, IsHealth = item.IsHealth }; TargetSpiderService.ServiceEntryies.Add(spiderServiceEntry); } } } }
public void Configure(IWebHostBuilder builder) { //持久化 builder.ConfigureServices((context, services) => { services.AddSpider(options => { { var s1 = new SpiderServiceEntry("http://api.coobeedior.com") { Weight = 2 }; var s2 = new SpiderServiceEntry("http://47.111.87.132:8012") { Weight = 4 }; var spiderService = new SpiderService("wechat") { StrategyType = StrategyType.WeightRoundRobin, HealthUrl = "index" }; spiderService.ServiceEntryies.Add(s1); spiderService.ServiceEntryies.Add(s2); options.Services.Add(spiderService); } //{ // var s1 = new SpiderServiceEntry() { Url = "http://api.coobeedior.com", Weight = 2 }; // var s2 = new SpiderServiceEntry() { Url = "http://47.111.87.132:8012", Weight = 4 }; // var spiderService = new SpiderService() { ServiceName = "name", StrategyType = StrategyType.WeightRoundRobin }; // spiderService.ServiceEntryies.Add(s1); // spiderService.ServiceEntryies.Add(s2); // options.Services.Add(spiderService); //} }); services.AddSingleton <IStartupFilter, SpiderStartupFilter>(); }); }