您现在的位置是:首页 > 文章详情

Guava之EventBus

日期:2018-11-29点击:930

背景


天天说解耦解耦~事实上我们还没有mq


但是我们之前通过redis来模拟过queue进行消费 代码实现Redis异步任务 Redis实现优先级队列


都是很棒的实现办法 同时关于topic我们也可以通过redis的发布订阅来实现【当然持久化topic无法实现】


但是我们有时在项目中也需要简单的消息总线进行解耦~


恰逢碰到瓜子二手车事件 来简单的介绍一下Guava的eventbus


分析


我们一直在说解耦解耦  究竟什么是耦合呢?

耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。


其实简单点说就是我们写代码不愿意吧代码写在一块~写在一块容易出现的问题比较多 而且由于依赖这个事件的越来越多也会使得这块代码越来越多


我们依赖一个消息 根据该消息就可以做各种操作【有没有想到观察者模式~~~】


事实上Guava提供了一种基于反射实现的解耦的方式EventBus【顾名思义 消息总线】


代码


首先初始化EventBus对象


images/h8zAZKZaT8C4XeXf4A4Sym3WQ5jaShQM.jpg


分别对应到同步和异步


我们在使用时需要注册一系列Listener到EventBus上 为了方便 我们自定义消息Listener类型为EventBusListener

for (EventBusListener listener : listenerList) {     eventBus.register(listener);     logger.info("register {} ", listener.getClass()); }


那么如何使用呢?

MaintainCreateEvent event = new MaintainCreateEvent(); event.setIdOwnOrg(maintainVO.getIdOwnOrg()); event.setTid(maintainVO.getPkId()); event.setBillNo(maintainVO.getBillNo()); eventbus.post(event);


post即可 那么对应的需要被唤醒的方法如何处理?

@Subscribe public void processCreate(MaintainCreateEvent createEvent) {     logger.info(JSON.toJSONString(createEvent));   }


通过注解Subscribe完成方法路由【注意根据类型】


炒鸡简单有没有~~~


如何定义多个处理事件呢???


继续Subscribe呗




原文链接:https://blog.roncoo.com/article/133749
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章