public class Devourer extends Object
| Modifier and Type | Field and Description |
|---|---|
protected BiConsumer<Throwable,Devourer> |
errorHandler
错误处理函数
|
protected Executor |
exec
线程池
|
protected Integer |
failMaxKeep
对列中失败的最大保留个数,
如果 大于0 执行失败, 暂时保留, 直至 排对的个数大于此值
否则 失败丢弃
默认: 执行失败,丢弃
|
protected String |
key
队列标识
|
protected LatchLock |
lock
流量限制锁
|
protected static org.slf4j.Logger |
log |
protected Predicate<Devourer> |
pauseCondition
暂停执行条件
|
protected boolean |
useLast
使用最后入队想任务/任务最后有效
useLast(boolean) |
protected Deque<Runnable> |
waiting
任务执行对列
|
| Constructor and Description |
|---|
Devourer() |
Devourer(String key)
创建对列
|
Devourer(String key,
Executor exec)
创建对列
|
| Modifier and Type | Method and Description |
|---|---|
Devourer |
errorHandle(BiConsumer<Throwable,Devourer> handler)
错误处理
|
Devourer |
failMaxKeep(Integer maxKeep)
执行失败时, 保留最大个数
NOTE: 失败的任务会不断的重试执行, 直到成功或者对列中的个数大于此值被删除
典型应用: 数据上报场景
|
int |
getWaitingCount()
排对个数
|
boolean |
isSuspended()
是否是暂停状态
|
Devourer |
offer(Runnable fn)
任务入对列
|
int |
parallel()
正在执行的任务数
|
Devourer |
parallel(int parallel)
设置并发数
|
Devourer |
resume()
手动恢复执行
|
void |
shutdown()
关闭
|
Devourer |
suspend(Duration duration)
暂停一段时间
NOTE 继续执行条件: 必须有新的任务入对, 或者手动调用
resume() |
Devourer |
suspend(Predicate<Devourer> pauseCondition)
设置暂停条件
使用
resume() 恢复 |
String |
toString() |
protected void |
trigger()
不断的从
waiting 对列中取出执行 |
Devourer |
useLast(boolean useLast)
是否只使用队列最后一个, 清除队列前面的任务
适合: 入队的频率比出队高, 前面的任务可有可无
|
protected static final org.slf4j.Logger log
protected final Executor exec
protected final String key
protected Integer failMaxKeep
protected final LatchLock lock
protected BiConsumer<Throwable,Devourer> errorHandler
protected boolean useLast
useLast(boolean)public Devourer(String key)
key - 对列标识public Devourer()
protected void trigger()
waiting 对列中取出执行public int getWaitingCount()
public Devourer errorHandle(BiConsumer<Throwable,Devourer> handler)
handler - 错误处理器Devourerpublic Devourer failMaxKeep(Integer maxKeep)
Devourerpublic Devourer suspend(Duration duration)
resume()duration - 一段时间Devourerpublic Devourer suspend(Predicate<Devourer> pauseCondition)
resume() 恢复pauseCondition - 暂停条件Devourerpublic Devourer useLast(boolean useLast)
public boolean isSuspended()
public int parallel()
public void shutdown()
Copyright © 2022. All rights reserved.