概述
SpringBoot项目中使用Google EventBus
1、项目导入依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
2、注册为Bean组件
package com.jidi.springbootredis.config;
import com.google.common.eventbus.AsyncEventBus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Description
* @Author jidi
* @Email jidi_jidi@163.com
* @Date 2021/5/20
*/
@Configuration
public class EventBusConfig {
/**
* 定义EventBus
*/
@Bean
public AsyncEventBus asyncEventBus() {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 10, 60,TimeUnit.SECONDS, new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.DiscardPolicy());
return new AsyncEventBus(threadPoolExecutor);
}
}
3、添加事件处理监听器
package com.jidi.springbootredis.listener;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.Subscribe;
import com.jidi.springbootredis.model.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @Description
* @Author jidi
* @Email jidi_jidi@163.com
* @Date 2021/5/20
*/
@Slf4j
@Component
public class EventBusListener {
@Autowired
private AsyncEventBus eventBus;
/**
*
在事件总线中注册
*/
@PostConstruct
public void init(){
eventBus.register(this);
}
/**
*
具体要执行的业务逻辑
*/
@Subscribe
public void test(User user){
log.info("{}", user.toString());
}
}
4、业务层调用
@Autowired
private EventBus eventBus;
/**
* 使用EventBus进行异步处理,会执行EventBusListener中对应的方法,根据参数类型进行匹配
*/
public void test(){
eventBus.post(new User());
}
最后
以上就是乐观黑夜为你收集整理的SpringBoot项目中使用Google EventBus的全部内容,希望文章能够帮你解决SpringBoot项目中使用Google EventBus所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复