zhegexiaohuozi / SeimiCrawler

一个简单、敏捷、分布式的支持SpringBoot的Java爬虫框架;An agile, distributed crawler framework.
http://seimicrawler.org
Apache License 2.0
1.98k stars 679 forks source link

启动的时候只加载指定爬虫 #6

Closed xiaoyao2102 closed 8 years ago

xiaoyao2102 commented 8 years ago

之前的做法是扫描crawlers包下面所有爬虫加载到context中,但是有些并不想加载的爬虫会对环境造成影响。

比如一个爬虫指定redis作为queue而另一个用defaultqueue,如果只启动第二爬虫的话,在没有redis环境下也会报出could not get resource from the pool。

现在把Seimi及SeimiContext的构造器改为有参构造,这样可以在注册类的时候屏蔽掉那些不想启动的爬虫。

zhegexiaohuozi commented 8 years ago

如果不想某个crawler被加载,直接注释掉或是去掉相应crawler的@Crawler注解即可,不必如此。

另外支持扫描到即加载是为了可以自动发现其依赖jar包中的crawler,正是因为这个特性,才可以使得一个较大的爬虫开发团队(甚至可以不是同部门),可以很方便的分工开发,他们只需将各自负责的crawler打包发布成jar,最终爬虫主工程依赖他们打包发布即可。

zhegexiaohuozi commented 8 years ago

另外,你的pr令我感到非常的欣慰(虽然我不赞同这个merge),感谢你的支持!

xiaoyao2102 commented 8 years ago

嗯,的确有道理,感谢作者解释:)

应该还是我这里需求比较少见。我这里会需要同时运行多个爬虫,并且可以随时各自启动和停止(有时候系统资源紧张需要停掉一些优先级低的爬虫),所以最好的情况应该是在不重新打包的情况下,用命令行参数来选择需要启动的爬虫。