Guava之EventBus
背景
天天说解耦解耦~事实上我们还没有mq
但是我们之前通过redis来模拟过queue进行消费 代码实现Redis异步任务 Redis实现优先级队列
都是很棒的实现办法 同时关于topic我们也可以通过redis的发布订阅来实现【当然持久化topic无法实现】
但是我们有时在项目中也需要简单的消息总线进行解耦~
恰逢碰到瓜子二手车事件 来简单的介绍一下Guava的eventbus
分析
我们一直在说解耦解耦 究竟什么是耦合呢?
耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
其实简单点说就是我们写代码不愿意吧代码写在一块~写在一块容易出现的问题比较多 而且由于依赖这个事件的越来越多也会使得这块代码越来越多
我们依赖一个消息 根据该消息就可以做各种操作【有没有想到观察者模式~~~】
事实上Guava提供了一种基于反射实现的解耦的方式EventBus【顾名思义 消息总线】
代码
首先初始化EventBus对象
分别对应到同步和异步
我们在使用时需要注册一系列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呗

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Zookeeper数据模型及其应用
Zookeeper作为分布式系统的底层协调服务有着其简单可依靠的数据模型,数据模型加之数据同步、一致性处理和可靠性,在此之上有很多经典的应用,例如,分布式锁、服务器动态上线下感知、主节点选举、数据发布与订阅、负载均衡等等。虽然应用场景很多,但是最根本的还是基于两个核心的服务,1.管理和存储数据结点,2.提供对结点的监听服务。 一.Zookeeper数据模型 Zookeeper数据模型类似Linux操作系统的文件系统,也是以树的形式来存储。严格来说是一颗多叉树,每个节点上都可以存储数据,每个节点还可以拥有N个子结点,最上层是根节点以“/”来代表。 在每个结点上都存储了相应的数据,数据可以是字符串、二进制数。但是默认情况下每个结点的数据大小的上限是1M,这是因为Zookeeper主要是用来协调服务的,而不是存储数据,管理一些配置文件和应用列表之类的数据。虽然可以修改配置文件来改变数据大小的上限,但是为了服务的高效和稳定,建议结点数据不要超过默认值。 可以看到,在Zookeeper中存储的创建的结点和存储的数据包含结点的创建时间、修改时间、结点id、结点中存储数据的版本、权限版本、孩子结...
- 下一篇
高可用架构-- MySQL主从复制的配置
视频资源:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 点击链接加入群【Dubbo技术交流2群】:https://jq.qq.com/?_wv=1027&k=46DhoVv 环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-mysql-01 从节点IP:192.168.1.206 主机名:edu-mysql-02 主机配置:4核CPU、4G内存 依赖课程 《高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)》 MySQL主从复制官方文档 http://dev.mysql.com/doc/refman/5.6/en/replication.html MySQL主从复制的方式 MySQL5.6开始主从复制有两种方式:基于日志(binlog)、基于GTID(全局事务标示符)。 本教程主要讲基于日志(binlog...
相关文章
文章评论
共有0条评论来说两句吧...