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());}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部