# 资源调度器

资源调度器在风铃虫中负责进行资源的调度,是风铃虫中的灵魂存在。

资源调度器功能如下:

  1. 接收所有未过滤的链接
  2. 从资源池中获取一个链接
  3. 将接收的资源过滤后放入资源缓存器

目前风铃虫中内置的资源调度器有:

  • 内存调度器
  • 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();


Last Updated: 5/23/2020, 11:22:38 PM