Spring can be used as an event bus replacement, since the ApplicationContext is also an ApplicationEventPublisher
The reference Spring implementation is to be found in SimpleApplicationEventMulticaster, which can optionally use a thread pool to distribute the events asynchronously.