文档章节

Guava之EventBus

Mr_Qi
 Mr_Qi
发布于 08/09 18:54
字数 613
阅读 525
收藏 10

背景

天天说解耦解耦~事实上我们还没有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呗

© 著作权归作者所有

共有 人打赏支持
Mr_Qi
粉丝 266
博文 328
码字总数 343520
作品 0
南京
程序员
加载中

评论(3)

节节草
节节草

引用来自“Mr_Qi”的评论

引用来自“节节草”的评论

我自己写的事件通知框架比这个还强大些哈哈

可以分享出来看看啊
暂时不了,这个是我的框架核心,暂时没有分享的计划,不过我是根据PureMvc框架改的,再结合自己写的一个类扫描工具自动注册事件
Mr_Qi
Mr_Qi

引用来自“节节草”的评论

我自己写的事件通知框架比这个还强大些哈哈

可以分享出来看看啊
节节草
节节草
我自己写的事件通知框架比这个还强大些哈哈
Guava库学习:学习Guava EventBus(一)EventBus

在软件开发过程中,对象信息的分享以及相互直接的协作是必须的,困难在于确保对象之间的沟通是有效完成的,而不是拥有成本高度耦合的组件。当对象对其他组件的责任有太多的细节时,它被认为是...

Realfighter
2014/12/29
0
0
为JFinal添加event消息事件

在之前使用spring mvc的时候,在复杂的下单和支付中有一部分功能使用的Spring事件驱动模型去完成!具体优点不啰嗦了,发现涛哥有篇文章讲得比较详细:[详解Spring事件驱动模型][1] 最初准备基...

如梦技术
2015/04/28
0
20
Android EventBus二三事

废话很多的前言 EventBus,也即事件总线。在[wiki][event_monitor]上有关于Event Monitor的一个说法: Event monitoring makes use of a logical bus to transport event occurrences from so......

苦辛味
2014/09/21
0
0
guava eventbus源码解析

说在前面 本文转自“天河聊技术”微信公众号 事件驱动模型设计是一种优雅的程序设计方式,实现有很多,原理都是发布与订阅,观察者设计模式实现,java自带的实现、spring ioc的事件驱动模型,...

天河2018
07/07
0
0
走近Guava(六): 事件总线EventBus

EventBus: 创建EventBus实例: EventBus eventBus = new EventBus();//或者EventBus eventBus = new EventBus(TradeAccountEvent.class.getName());//带标识符,用于日志记录 订阅事件: 模拟......

ihaolin
2014/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg调试C源码级驱动

联机方式不多说了。我博客里有,英文的。 windbg联机文档 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel......

simpower
26分钟前
0
0
redis快照和AOF简介

数据持久化到硬盘:一是快照(snapshotting),二是只追加文件(append-only file AOF) 快照 核心原理:redis某个时间内存内的所有数据写入硬盘 场景:redis快照内存里面的数据 1. 用户发送bgsav...

拐美人
26分钟前
0
0
这个七夕,送你一份程序员教科书级别的告白指南

给广大爱码士们的高能预警: 今天,就是七夕了…… (单身非作战人群请速速退场!) 时常有技术GG向个推君抱怨 经过网民多年的教育 以及技术人持之以恒的自黑 冲锋衣狂热分子·格子衫骨灰级粉...

个推
31分钟前
0
0
python爬虫日志(15)cookie详解

转载:原文地址 早期Web开发面临的最大问题之一是如何管理状态。服务器端没有办法知道两个请求是否来自于同一个浏览器。那时的办法是在请求的页面中插入一个token,并且在下一次请求中将这个...

茫羽行
32分钟前
0
0
qlv视频格式转换器

  腾讯视频中的视频影视资源有很多,小编经常在里面下载视频观看,应该也有很多朋友和小编一样吧,最近热播的电视剧也不少,如《香蜜沉沉烬如霜》、《夜天子》还有已经完结的《扶摇》,这么...

萤火的萤火
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部