Пример #1
0
        public async Task Process(byte[] processMessage, IPlatformExit platformExit)
        {
            KernelMessage kernelMessage = JsonConvert.DeserializeObject <KernelMessage>(Encoding.UTF8.GetString(processMessage));
            ScrapySource  scrapySource  = await coreCache.RestoreAsync <ScrapySource>(PrefixConst.SOURCE_META + kernelMessage.JobId);

            var        sourceType = scrapySource.Source.Type;
            IExtractor extractor  = extractorManager.GetExtrator(sourceType);
            await extractor.ExtractTarget(scrapySource.Source.Parameters.ToString(), scrapySource.SaveTo);

            string         transformJobIdsKey = PrefixConst.SOURCE_TRANSFOR_MAP + kernelMessage.JobId;
            TaskingManager taskingManager     = new TaskingManager();
            List <string>  jobIds             = await coreCache.RestoreAsync <List <string> >(transformJobIdsKey);

            if (jobIds != null)
            {
                foreach (var x in jobIds)
                {
                    KernelMessage transforMsg = new KernelMessage()
                    {
                        JobId       = x,
                        MessageId   = kernelMessage.MessageId,
                        MessageName = kernelMessage.MessageName
                    };
                    taskingManager.AddTask(platformExit.OutRandom(transforMsg));
                    logger.Debug(JsonConvert.SerializeObject(transforMsg));
                }
            }
            await taskingManager.WhenAll();
        }