12.4. 事件同步
默认情况下,所有 async 通知都在通知线程池中分配。同步通知会延迟操作,直到监听器方法完成或完成 CompletionStage 完成后(前者会导致线程块)。或者,您可以将监听程序注解为 异步,在这种情况下,操作将立即继续,同时在通知线程池上异步完成通知。要做到这一点,只需注解您的监听器:
异步 Listener
@Listener (sync = false)
public class MyAsyncListener {
@CacheEntryCreated
void listen(CacheEntryCreatedEvent event) { }
}
@Listener (sync = false)
public class MyAsyncListener {
@CacheEntryCreated
void listen(CacheEntryCreatedEvent event) { }
}
阻塞 Synchronous Listener
@Listener
public class MySyncListener {
@CacheEntryCreated
void listen(CacheEntryCreatedEvent event) { }
}
@Listener
public class MySyncListener {
@CacheEntryCreated
void listen(CacheEntryCreatedEvent event) { }
}
非阻塞 Listener
@Listener
public class MyNonBlockingListener {
@CacheEntryCreated
CompletionStage<Void> listen(CacheEntryCreatedEvent event) { }
}
@Listener
public class MyNonBlockingListener {
@CacheEntryCreated
CompletionStage<Void> listen(CacheEntryCreatedEvent event) { }
}
异步线程池
要调整用于分配此类异步通知的线程池,请在配置文件中使用 & lt;listener-executor /> XML 元素。