guava 事件总线

传统上,Java的进程内事件分发都是通过发布者和订阅者之间的显式注册实现的。

设计EventBus就是为了取代这种显示注册方式,使组件间有了更好的解耦。

EventBus不是通用型的发布-订阅实现,不适用于进程间通信。

如下,当多个监听类(须使用@Subscribe注解)都处在同一类事件总线(可根据业务需求设计不同的事件总线)中时,当其中某一个监听类post事件后,其他每一个监听类都会收到同样的事件通知。

// Class is typically registered by the container.
class EventBusChangeRecorder {
    @Subscribe 
    public void recordCustomerChange(ChangeEvent e) {
        recordChange(e.getChange());
    }
}

// somewhere during initialization
eventBus.register(new EventBusChangeRecorder());

// much later
public void changeCustomer() {
    ChangeEvent event = getChangeEvent();
    eventBus.post(event);
}

当不同JVM之间需要使用事件通知时,可使用一个中间件来作转换,如使用数据库、IO写文件都可,如下:


 

猜你喜欢

转载自study121007.iteye.com/blog/2295922