コード例 #1
0
        public override async Task EnqueueRequests(string ownerId, IEnumerable <Request> requests)
        {
            // 本机下载中心只会有一个下载代理
            var agents = await DownloaderAgentStore.GetAllListAsync(ownerId);

            if (agents.Count <= 0)
            {
                Logger.LogError("未找到活跃的下载器代理");
            }

            var agent = agents[0];
            var json  = JsonConvert.SerializeObject(requests);
            await Mq.PublishAsync(agent.Id, $"{Framework.DownloadCommand}|{json}");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }