依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
配置
@Configuration
public class AsyncEventBusConfig {
@Bean
@Scope("singleton")
public AsyncEventBus asyncEventBus() {
final ThreadPoolTaskExecutor executor = executor();
return new AsyncEventBus("Merchant-AsyncEventBus", executor);
}
@Bean
public ThreadPoolTaskExecutor executor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(20);
return executor;
}
}
生产者
@Autowired
private AsyncEventBus asyncEventBus;
public void myFunc(MyEvent event) {
...
asyncEventBus.post(MyEvent.builder().id(1).name("Joe.Ye").build());
}
消费者
@Autowired
private AsyncEventBus asyncEventBus;
@Subscribe
public void listenMyEvent(MyEvent event) {
}
@PostConstruct
public void init() {
asyncEventBus.register(this);
}