最近在工作中碰到个问题,要在一个异步任务结束后,执行特定的操作。项目中没有用到Redis,又是单体应用,可以用基于Java的发布订阅组件,于是想到了Guava EventBus。
整合Guava EventBus的流程如下:
一、添加maven依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
二、创建EventBus Bean
在Spring Boot 配置类中,创建一个 EventBus 的 Bean。这样,EventBus 就可以被注入到其他 Spring 管理的组件中。
import com.google.common.eventbus.EventBus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class EventBusConfig {
@Bean("myEventBus")
public EventBus eventBus() {
return new EventBus();
}
}
三、注册订阅者
先定义一个事件消息类(简单的POJO类即可),用于发送接收消