public static DotnetSpiderBuilder AddLocalDownloadCenter(this DotnetSpiderBuilder builder)
 {
     Check.NotNull(builder, nameof(builder));
     builder.Services.AddSingleton <IDownloadCenter, LocalDownloadCenter>();
     builder.Services.AddSingleton <IDownloaderAgentStore, LocalDownloaderAgentStore>();
     return(builder);
 }
        public static IServiceCollection AddDotnetSpider(this IServiceCollection services,
                                                         Action <DotnetSpiderBuilder> configureBuilder = null)
        {
            Check.NotNull(services, nameof(services));

            DotnetSpiderBuilder builder = new DotnetSpiderBuilder(services);

            configureBuilder?.Invoke(builder);

            return(services);
        }
        public static DotnetSpiderBuilder AddDownloaderCenter(this DotnetSpiderBuilder builder,
                                                              Action <DownloadCenterBuilder> configure = null)
        {
            Check.NotNull(builder, nameof(builder));

            builder.Services.AddSingleton <IDownloadCenter, LocalDownloadCenter>();

            DownloadCenterBuilder downloadCenterBuilder = new DownloadCenterBuilder(builder.Services);

            configure?.Invoke(downloadCenterBuilder);

            return(builder);
        }
        public static DotnetSpiderBuilder AddSpiderStatisticsCenter(this DotnetSpiderBuilder builder,
                                                                    Action <StatisticsBuilder> configure)
        {
            Check.NotNull(builder, nameof(builder));

            builder.Services.AddSingleton <IStatisticsCenter, StatisticsCenter>();

            var spiderStatisticsBuilder = new StatisticsBuilder(builder.Services);

            configure?.Invoke(spiderStatisticsBuilder);

            return(builder);
        }
        public static DotnetSpiderBuilder AddDownloaderAgent(this DotnetSpiderBuilder builder,
                                                             Action <AgentBuilder> configure = null)
        {
            Check.NotNull(builder, nameof(builder));

            builder.Services.AddSingleton <IDownloaderAllocator, DownloaderAllocator>();
            builder.Services.AddSingleton <IDownloaderAgent, LocalDownloaderAgent>();
            builder.Services.AddSingleton <NetworkCenter>();
            builder.Services.AddScoped <IDownloaderAgentOptions, DownloaderAgentOptions>();

            AgentBuilder spiderAgentBuilder = new AgentBuilder(builder.Services);

            configure?.Invoke(spiderAgentBuilder);

            return(builder);
        }
예제 #6
0
        /// <summary>
        /// 单机模式
        /// 在单机模式下,使用内存型消息队列,因此只有在此作用域 SpiderBuilder 下构建的的爬虫才会共用一个消息队列。
        /// </summary>
        /// <param name="builder">爬虫构造器</param>
        /// <returns>爬虫构造器</returns>
        public static SpiderBuilder UseStandalone(this SpiderBuilder builder)
        {
            Check.NotNull(builder, nameof(builder));

            var dotnetSpiderBuilder = new DotnetSpiderBuilder(builder.Services);

            dotnetSpiderBuilder.UseLocalMessageQueue();
            dotnetSpiderBuilder.AddLocalDownloaderAgent(x =>
            {
                x.UseFileLocker();
                x.UseDefaultAdslRedialer();
                x.UseDefaultInternetDetector();
            });
            dotnetSpiderBuilder.AddLocalDownloadCenter();
            dotnetSpiderBuilder.AddSpiderStatisticsCenter(x => x.UseMemory());

            return(builder);
        }
 public static DotnetSpiderBuilder UserKafka(this DotnetSpiderBuilder builder)
 {
     return(builder);
 }
 public static DotnetSpiderBuilder UseLocalMessageQueue(this DotnetSpiderBuilder builder)
 {
     builder.Services.AddSingleton <IMessageQueue, LocalMessageQueue>();
     return(builder);
 }
 public static DotnetSpiderBuilder UseDynamicMessageQueue(this DotnetSpiderBuilder builder)
 {
     //builder.Services.AddSingleton<IMessageQueue, LocalMessageQueue>();
     builder.Services.AddSingleton <IDynamicMessageQueue, InMemoryMessageQueue>();
     return(builder);
 }