一、思路来源
虽然guava中的eventbus已经很方便了,但是还是想要实现一个更为方便,同时支持延迟事件、同时带eventbus的组件。在Apache DolphinScheduler项目中,有一个eventbus的组件,这个组件写得挺好的,想着用在业务系统上,因此自己抽取了一下,拿到业务系统中来用。话不多说,我们把它抽取出来吧,同时进行demo的运行。还是要感谢Apache DolphinScheduler的开源,让这个很简单,但是很高效的组件能够让我们便捷地使用。
二、具体实现过程
首先是定义事件接口:
public interface IEvent {
}
针对事件接口,我们抽象出共性方法接口:延迟时间和过期时间。
public abstractclass AbstractDelayEvent implements IEvent, Delayed {
privatefinallong delayTime;
privatefinallong expireTime;
public long getDelayTime() {
return delayTime;
}
public long getExpireTime() {
return expireTime;
}
public AbstractDelayEvent(long delayTime) {
this.delayTime = delayTime;
this.expireTime = System.currentTimeMillis() + delayTime;
}
@Override
public long getDelay(TimeUnit unit) {
long diff = expireTime - System.currentTimeMillis();
return unit.convert(

最低0.47元/天 解锁文章
176万+

被折叠的 条评论
为什么被折叠?



