SpringBoot项目中使用Google EventBus
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*/@Beanpublic 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 {@Autowiredprivate AsyncEventBus eventBus;/*** 在事件总线中注册*/@PostConstructpublic void init(){eventBus.register(this);}/*** 具体要执行的业务逻辑*/@Subscribepublic void test(User user){log.info("{}", user.toString());}
}
4、业务层调用
@Autowiredprivate EventBus eventBus;/*** 使用EventBus进行异步处理,会执行EventBusListener中对应的方法,根据参数类型进行匹配*/public void test(){eventBus.post(new User());}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
