前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guava学习笔记--02. EventBus使用

Guava学习笔记--02. EventBus使用

作者头像
付威
发布2020-02-17 09:50:32
3580
发布2020-02-17 09:50:32
举报

Guava EventBus

EventBus 是Guava的一个发布订阅的模型,先看一个简单的实现:

  1. 定义一个Event的消息传递对象

 public class TestEvent1 {
     private final int message;

     /** * 构造方法 * @param message */
     public TestEvent1(int message) {
         this.message = message;
        // System.out.println("TestEvent1 事件message:"+message);
     }

     public int getMessage() {
         return message;
     }
 } 
 
  1. 定义一个Listener
 public class EventListener {
     public int lastMessage = 0;

     @Subscribe public void listen(TestEvent1 event) {
         lastMessage = event.getMessage();
         System.out.println("Message:"+lastMessage);
     }

     public int getLastMessage() {
         return lastMessage;
     }
 } 
  1. 定义一个使用
  public static void main(String[] args) {
     // 1.构造一个事件总线
     EventBus eventBus = new EventBus("test");

     // 2.构造一个事件监听器
     EventListener listener = new EventListener();

     // 3.把事件监听器注册到事件总线上
     eventBus.register(listener);

     // 4.事件总线发布事件,触发监听器方法
     eventBus.post(new TestEvent1(1));

 }    
 

运行结果是:

    Message:1

如果是多个方法需要调用,只需要在新方法上面加上@Subscribe注解。

    @Subscribe         
    public void listen2(TestEvent1 event) {
        lastMessage = event.getMessage();
        System.out.println("Message2:"+lastMessage);
    } 

如果想使用异步的方法处理,可以使用AsyncEventBus ,具体代码:

AsyncEventBus eventBus = new AsyncEventBus (Executors.newFixedThreadPool(3));

当然也可以注册多个EventListener。

  eventBus.register(new EventListener());
  eventBus.register(new EventListener2());

(本文完)

作者:付威 博客地址:http://blog.laofu.online 如有任何知识产权、版权问题或理论错误,还请指正。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Guava EventBus
相关产品与服务
事件总线
腾讯云事件总线(EventBridge)是一款安全,稳定,高效的云上事件连接器,作为流数据和事件的自动收集、处理、分发管道,通过可视化的配置,实现事件源(例如:Kafka,审计,数据库等)和目标对象(例如:CLS,SCF等)的快速连接,当前 EventBridge 已接入 100+ 云上服务,助力分布式事件驱动架构的快速构建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档