public override async Task <bool> AllocateAsync(AllotDownloaderMessage allotDownloaderMessage) { List <DownloaderAgent> agents = null; for (int i = 0; i < 50; ++i) { agents = await DownloaderAgentStore.GetAllListAsync(); if (agents.Count <= 0) { Thread.Sleep(100); } else { break; } } if (agents == null) { Logger.LogError("未找到活跃的下载器代理"); return(false); } // 保存节点选取信息 await DownloaderAgentStore.AllocateAsync(allotDownloaderMessage.OwnerId, new[] { agents[0].Id }); Logger.LogInformation("下载器代理分配成功"); // 发送消息让下载代理器分配好下载器 var message = $"{Framework.AllocateDownloaderCommand}|{JsonConvert.SerializeObject(allotDownloaderMessage)}"; foreach (var agent in agents) { await Mq.PublishAsync(agent.Id, message); } return(true); }
/// <summary> /// 单机模式只有一个下载器代理 /// </summary> /// <param name="allotDownloaderMessage">分配下载器代理的选项</param> /// <returns></returns> protected override async Task <bool> AllocateAsync(AllotDownloaderMessage allotDownloaderMessage) { var agent = Agents.Values.FirstOrDefault(); if (agent == null) { Logger.LogInformation($"任务 {allotDownloaderMessage.OwnerId} 未找到可用的下载器代理"); return(false); } // 保存节点选取信息 await DownloaderAgentStore.AllocateAsync(allotDownloaderMessage.OwnerId, new[] { agent.Id }); // 发送消息让下载代理器分配好下载器 var message = $"|{Framework.AllocateDownloaderCommand}|{JsonConvert.SerializeObject(allotDownloaderMessage)}"; await Mq.PublishAsync(agent.Id, message); Logger.LogInformation( $"任务 {allotDownloaderMessage.OwnerId} 分配下载代理器成功: {JsonConvert.SerializeObject(agent)}"); return(true); }