当前位置: 首页 > wzjs >正文

给传销产品做网站nba哈登最新消息

给传销产品做网站,nba哈登最新消息,如何在阿里巴巴上做网站,自己做时时彩票网站一、思路来源 虽然guava中的eventbus已经很方便了,但是还是想要实现一个更为方便,同时支持延迟事件、同时带eventbus的组件。在Apache DolphinScheduler项目中,有一个eventbus的组件,这个组件写得挺好的,想着用在业务…

一、思路来源

虽然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;}@Overridepublic long getDelay(TimeUnit unit) {long diff = expireTime - System.currentTimeMillis();return unit.convert(diff, TimeUnit.MILLISECONDS);}@Overridepublic int compareTo(Delayed o) {if (this.expireTime < ((AbstractDelayEvent) o).expireTime) {return -1;}if (this.expireTime > ((AbstractDelayEvent) o).expireTime) {return1;}return0;}
}

主要的信息:

定义eventbus中,我们需要使用的方法:

public interface IEventBus<T extends IEvent> {void publish(T event);Optional<T> poll() throws InterruptedException;Optional<T> peek();Optional<T> remove();boolean isEmpty();int size();
}

可以看到主要是:发布事件、消费、移除、删除、判断当前的事件是否为空,以及事件大小等方法。其中最重要的方法为发布事件和消费处理事件方法。

针对当前的事件bus接口进行抽象,抽取出共性方法,方便复用:

public abstractclass AbstractDelayEventBus<T extends AbstractDelayEvent> implements IEventBus<T> {protectedfinal DelayQueue<T> delayEventQueue = new DelayQueue<>();@Overridepublic void publish(T event) {delayEventQueue.put(event);}@Overridepublic Optional<T> poll() throws InterruptedException {// 使用带超时的 poll 方法,等待事件到期return Optional.ofNullable(delayEventQueue.poll(1000, TimeUnit.MILLISECONDS));}@Overridepublic Optional<T> peek() {return Optional.ofNullable(delayEventQueue.peek());}@Overridepublic Optional<T> remove() {return Optional.ofNullable(delayEventQueue.poll());}@Overridepublic boolean isEmpty() {return delayEventQueue.isEmpty();}@Overridepublic int size() {return delayEventQueue.size();}
}

三、测试运行效果

接下来,我们使用它,来进行处理:

定义自己的延迟事件:

如果是在业务中,可以定义自己的业务数据信息事件对象

public class MyDelayEvent extends AbstractDelayEvent {private final String message;public MyDelayEvent(long delayTime, String message) {super(delayTime);this.message = message;}public String getMessage() {return message;}
}

定义事件延迟事件bus

当然也可以进行自己的可定制化特性。

public class MyDelayEventBus extends AbstractDelayEventBus<MyDelayEvent> {// 不需要额外的修改
}

进行测试:

思路:创建事件总线、发布事件,然后针对发布的事件信息,进行消费,然后等待延迟时间的到来,从而实现消费,从而进行业务的处理。

import java.util.Optional;publicclass EventBusExample {public static void main(String[] args) throws InterruptedException {// 创建事件总线IEventBus<MyDelayEvent> eventBus = new MyDelayEventBus();// 发布单个事件eventBus.publish(new MyDelayEvent(100, "Single Event"));System.out.println("After publish, event bus size: " + eventBus.size());// 持续尝试消费事件while (true) {Optional<MyDelayEvent> event = eventBus.poll();if (event.isPresent()) {System.out.println("Received event: " + event.get().getMessage());} else {System.out.println("No event received within the timeout.");break;}}// 检查总线大小System.out.println("Event bus size: " + eventBus.size());}
}

运行结果:

抽取

可以看到实现自己的业务逻辑还是很方便的,可以自己实现吧,这里给出的代码是可以运行的。

  • 源码地址:https://gitee.com/null_713_2407/pratice
  • 参考:
    github:https://github.com/apache/dolphinscheduler

作者 | 刘亚洲

http://www.dtcms.com/wzjs/313803.html

相关文章:

  • 广州网站制作托管做引流的公司是正规的吗
  • 做外汇上什么网站看新闻搜索引擎最新排名
  • 住房和城乡建设部网站 城市绿地分类免费的短视频app大全
  • 用国外服务器做赌博网站搜索引擎优化的流程是什么
  • 网站建设设计维片武汉seo技术
  • 门户网站html武汉seo广告推广
  • 天津做美缝的网站seo整站优化一年价格多少
  • 怎么制作爆米花教程seo专业培训学费多少钱
  • 网站备案号中信息有变营销排名seo
  • 宁波做网站建设五种新型营销方式
  • 定制化网站开发报价2021年热门关键词
  • 最新网站推广推蛙网络
  • 济宁做网站公司北京网络优化
  • 如何用服务器建设网站石家庄关键词优化软件
  • 郑州网站优化服务济南百度竞价代运营
  • 视频网站的服务器多大网站推广优化网址
  • 东城免费做网站北京seo优化排名推广
  • 网站有哪些备案软文广告营销
  • 高水平的徐州网站建设百度推广网页版
  • 网站制作哪种好国内搜索引擎排名
  • 做计算机网站seo顾问
  • 网站建设与维护的实训总结适合女生去的培训机构
  • 杭州网站制作哪家好广州网站优化推广
  • 网站定制公司地址网络平台推广具体是怎么推广
  • 网站集约化建设2019年4月nba最新排行
  • wordpress创建数据库错误seo搜索引擎优化试题及答案
  • 烟台网站建设策划方案新网站百度收录要几天
  • 成都摄影网站建设pc网站建设和推广
  • 建立网站需要多少钱怎么样宁波关键词优化企业网站建设
  • 酷站海洛互联网搜索引擎有哪些