示例#1
0
        public override void WriteYaml(StreamWriter writer, AssetManager assetManager, ILoggerFactory loggerFactory, int indent = 0)
        {
            var spaces = "".PadLeft(indent);

            writer.Write($"{spaces}servicebus:\n");

            spaces = "".PadLeft(indent + 2);
            writer.Write($"{spaces}name: {Name}\n");
            var resourceGroup = ResourceGroup ?? assetManager.GetResourceGroup()?.Name;

            if (!string.IsNullOrEmpty(resourceGroup))
            {
                writer.Write($"{spaces}resourceGroup: {resourceGroup}\n");
            }

            if (Queues?.Any() == true)
            {
                writer.Write($"{spaces}queues:\n");
                foreach (var queue in Queues)
                {
                    spaces = "".PadLeft(indent + 4);
                    writer.Write($"{spaces}- {queue}\n");
                }
            }
            if (Topics?.Any() == true)
            {
                writer.Write($"{spaces}topics:\n");
                foreach (var topic in Topics)
                {
                    spaces = "".PadLeft(indent + 4);
                    writer.Write($"{spaces}- {topic}\n");
                }
            }
        }
        private IEnumerable <PredefinedQueue> GetQueues()
        {
            if (Queues != null && Queues.Any())
            {
                return(Queues.Select(item => Enum.Parse(typeof(PredefinedQueue), item)).Cast <PredefinedQueue>().ToList());
            }
            IList <PredefinedQueue> queues = Enum.GetValues(typeof(PredefinedQueue)).Cast <PredefinedQueue>().ToList();

            queues.Remove(PredefinedQueue.UnknownByClient);
            return(queues);
        }
示例#3
0
        private Queue GetQueue(string name)
        {
            if (!Queues.Any(x => x.Name == name))
            {
                var result = new Queue(name);

                Queues.Add(result);

                return(result);
            }

            return(Queues.Single(x => x.Name == name));
        }
示例#4
0
        public override async Task Start()
        {
            var lastRecord = await GetLastRecord();

            if (!string.IsNullOrEmpty(lastRecord?.Ids))
            {
                _lastImageIds = lastRecord.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                .Select(int.Parse).ToList();
            }

            _currentImageIds.Clear();

            if (!Queues.Any())
            {
                var queues = ServiceProvider.GetRequiredService <IEnumerable <ITaskQueue> >()
                             .Where(t => t.Id.Contains("Yande"));
                queues.ForEach(AddQueue);
            }

            await base.Start();

            await Distribute(new YandeListTaskData { Page = 1, LastImageIds = _lastImageIds });

            while (Active)
            {
                await Task.Delay(1000);
            }

            if (Status == TaskQueueStatus.Running)
            {
                await base.Stop();

                if (_currentImageIds.Any())
                {
                    var record = new YandeCollectRecord
                    {
                        CollectDt = DateTime.Now,
                        Ids       = string.Join(",", _currentImageIds),
                        Site      = Options.Value.Site
                    };
                    await SaveCollectRecord(record);
                }
            }
        }