# 资源调度器
资源调度器在风铃虫中负责进行资源的调度,是风铃虫中的灵魂存在。
资源调度器功能如下:
- 接收所有未过滤的链接
- 从资源池中获取一个链接
- 将接收的资源过滤后放入资源缓存器
目前风铃虫中内置的资源调度器有:
- 内存调度器
- redis调度器
# 内存调度器
核心代码如下
//获取风铃虫实例
Crawler crawler = ...
//注意此步骤一定要在风铃启动之前进行
crawler.setScheduler(new SimpleScheduler());
//启动风铃虫
crawler.start();
使用内存调度器是风铃虫默认使用的资源调度器,它是基于内存实现。
# Redis调度器
核心代码如下
//获取风铃虫实例
Crawler crawler = ...
//注意此步骤一定要在风铃启动之前进行
RedisScheduler redisScheduler = new RedisScheduler(redisTemplate);
crawler.setScheduler(redisScheduler);
//启动风铃虫
crawler.start();
此外在用户使用集群或分布式时建议用户使用redis资源调度器。
# 自定义资源管理器
除了上述两种风铃虫内置的资源调度器外,用户还可以使用自定义资源管理器。
核心代码如下
1 实现自定义资源调度器
import com.yishuifengxiao.common.crawler.scheduler.Scheduler;
public class CustomScheduler implements Scheduler {
private Queue<Request> queue = new ConcurrentLinkedQueue<>();
@Override
public synchronized void push(final Task task,Request request) {
this.queue.add(request);
}
@Override
public synchronized void clear(final Task task) {
this.queue.clear();
}
@Override
public synchronized Request poll(final Task task) {
return queue.poll();
}
}
2 应用自定义资源调度器
//获取风铃虫实例
Crawler crawler = ...
//注意此步骤一定要在风铃启动之前进行
crawler.setScheduler(new CustomScheduler());
//启动风铃虫
crawler.start();