@Component
public class ConsumerEvent001 implements EventAbstract<TestEvent001> {
@Subscribe
@Override
public void handle(TestEvent001 event) {
System.out.println("处理代码001:" + event.getName() + "------------------");
}
}
@Component
public class ConsumerEvent002 implements EventAbstract<TestEvent002>{
@Subscribe
@Override
public void handle(TestEvent002 event) {
//ThreadUtil.sleep(3000);
System.out.println("处理代码002:" + event.getName()+ "---------------------");
}
}
/**
* Event 事件处理抽象接口类
* @author zhangxun
*/
public interface EventAbstract<E> {
/**
* event
* @param event
*/
void handle(E event);
}
/**
* @Author: ZX
* @Date:
*/
@Configuration
public class EventConfig {
@Bean
public EventBus eventBus(){
EventBus eventBus = new EventBus();
return eventBus;
}
@Bean
public AsyncEventBus asyncEventBus(){
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3 , 10 , 3000L , TimeUnit.SECONDS, new ArrayBlockingQueue<>(3));
return new AsyncEventBus(threadPoolExecutor);
}
}
/**
* @Author: ZX
* @Date:
*/
@Component
public class EventListenerRegist {
@Autowired
private EventBus eventBus;
// @Qualifier(value = "asyncEventBus")
// @Autowired
// private AsyncEventBus asyncEventBus;
@Autowired
private ConsumerEvent001 consumerEvent001;
@Autowired
private ConsumerEvent002 consumerEvent002;
@PostConstruct
public void init(){
eventBus.register(consumerEvent001);
eventBus.register(consumerEvent002);
}
}
@Component
public class ProviderEvent {
@Autowired
private EventBus eventBus;
@Autowired
private AsyncEventBus asyncEventBus;
public <T> void post(T t){
eventBus.post(t);
}
public <T> void asyncPost(T t){
eventBus.post(t);
}
}
public class TestEvent001 {}
public class TestEvent002 {}
public class TestApp {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(TestApp.class);
annotationConfigApplicationContext.scan("com");
TestEvent001 testEvent001 = new TestEvent001("test001");
ProviderEvent bean = annotationConfigApplicationContext.getBean(ProviderEvent.class);
for(int i = 0 ;i < 100 ; i++){
bean.asyncPost(new TestEvent002("test002--" + i));
}
//bean.post(testEvent001);
}
}
记录学习,spring + Guava EventBus
最新推荐文章于 2024-01-30 10:25:00 发布