轻量级分布式延时任务处理组件easyTask-L-API介绍篇
easyTask-L的API设计比较简洁、易于理解和使用。主要涉及环形队列类、配置类、任务超类以及监控类四个方面。下面逐一做简单介绍。本文只对比较重要的API做介绍,其他API还望读者自行探索
环形队列(AnnularQueue)
环形队列类设计为单例模式。通过AnnularQueue.getInstance();获取。
1、void start(EasyTaskConfig config) throws Exception:
启动easyTask-L,包括环形队列时钟、集群等一系列工作。且只需要在系统启动时调用一次即可。切勿重复调用。参数config是必须的,系统将此配置参数实例作为当前工作的参数。如果启动失败将抛出异常。
2、String submit(Task task) throws Exception:
向环形队列中提交新任务。提交失败则抛出异常
3、String submitAllowWait(Task task) throws Exception
向环形队列中提交新任务。提交失败则抛出异常。如果环形队列还没有启动成功,则任务不抛出异常,等待启动后再正式提交任务。
配置类(EasyTaskConfig)
前面说了环形队列(集群)启动时需要给一个启动配置参数。因为这是系统必须的东西。
1、String zkAddress;
集群zookeeper地址配置。必填 如:127.0.0.1:2181
2、int backupCount ;
任务备份数量,默认2。最大2,超过部分无效
3、String taskStorePath;
自定义任务本地存储路径。必填
4、int sQLlitePoolSize
sqlite连接池大小设置。默认cpu数的两倍
5、int serverPort
设置当前节点Netty服务端口号。默认2020
6、int timeOut
设置集群通信调用超时时间。默认3秒
7、int loseTimeOut
ZK节点信息失效超时时间。默认超过60s就判断为失效节点,任何其他节点可删除掉
8、int deadTimeOut
ZK节点信息死亡超时时间。默认超过30s就判断为Leader失效节点,其Follow节点可进入选举新Leader
9、int heartBeat
节点对zk的心跳频率。默认2s一次
10、int tryCount
集群节点之间通信失败重试次数。默认2次
11、int clearScheduleBakTime
清理任务备份表中失效的leader备份。默认1小时一次。单位毫秒
12、ExecutorService clusterPool
集群公用程池。暂时不用设置
13、ExecutorService dispatchs
环形队列任务调度线程池。默认为cpu核心数
14、ExecutorService workers
环形队列工作任务线程池。默认为cpu核心数2倍
任务超类(Task)
1、void setEndTimestamp(long endTimestamp)
设置任务未来的执行时间戳。如果你设置的是一个过去的时间戳,则代表任务立即执行。适用于单次任务以及周期性任务
2、void setTaskType(TaskType taskType)
设置任务类型。单次任务或周期任务
3、void setUnit(TimeUnit unit)
设置周期任务的执行周期时间单位。支持天、小时、分、秒
4、void setParam(Map<String,String> param)
设置当前任务携带的执行参数。仅支持字符串类型。其他类型都可以转化为字符串
环形队列监控(AnnularQueueMonitor)
1、int getTaskInAnnularQueueQty()
获取环形队列中等待被触发执行的任务数
2、Map<String, String> getDispatchsPoolInfo()
获取分派任务线程池信息。包括:taskQty队列中等待执行的任务数,completedQty已经执行完成的任务数,activeQty正在执行任务的线程数,coreSize设置的核心线程数
3、Map<String, String> getWorkersPoolInfo()
获取执行任务线程池信息。包括:taskQty队列中等待执行的任务数,completedQty已经执行完成的任务数,activeQty正在执行任务的线程数,coreSize设置的核心线程数
集群监控(ClusterMonitor)
1、String getCurrentNodeInfo()
获取当前节点信息
2、Map<String, Map<String, List>> getDBTraceInfoByTaskId(String taskId)
获取任务的数据存储跟踪信息。因为涉及到访问数据库,不建议频繁调用
3、ZKNode getCurrentZKNodeInfo()
获取当前节点在zk上的注册信息
数据存储监控(DBMonitor)
1、Map<String,List> getInfoByTaskId(String taskId)
获取任务在本节点的数据存储信息