目录
学习目标:
要了解事件订阅者和事件发布者的基本功能以及事件订阅者和发布者之间的关系。
事件发布者是如何发布事件和处理事件的。
事件订阅者是如何注册事件和处理事件的。
事件订阅者
订阅事件Event 有一个全局的序号自增属性.所有集成该类的事件类型共用该属性的值
private static final AtomicLong SEQUENCE = new AtomicLong(0);
Subscriber接口有2个核心的方法 1、监听的事件类型 2、监听事件的处理
SmartSubscriber 扩展实现了多种事件类型的监听
类的功能简单代码这里不贴出来了,直接看类图
一起回顾下常用的订阅实现类
//服务管理器
public class ClientServiceIndexesManager extends SmartSubscriber {
.....
//支持服务上下线 客户端订阅取消订阅事件
@Override
public List<Class<? extends Event>> subscribeTypes() {
List<Class<? extends Event>> result = new LinkedList<>();
result.add(ClientOperationEvent.ClientRegisterServiceEvent.class);
result.add(ClientOperationEvent.ClientDeregisterServiceEvent.class);
result.add(ClientOperationEvent.ClientSubscribeServiceEvent.class);
result.add(ClientOperationEvent.ClientUnsubscribeServiceEvent.class);
result.add(ClientEvent.ClientDisconnectEvent.class);
return result;
}
.....
}
//元数据管理器
public class NamingMetadataManager extends SmartSubscriber {
.....
@Override
public List<Class<? extends Event>> subscribeTypes() {
//实例和服务的元数据变更事件
List<Class<? extends Event>> result = new LinkedList<>();
result.add(MetadataEvent.InstanceMetadataEvent.class);
result.add(MetadataEvent.ServiceMetadataEvent.class);
result.add(ClientEvent.ClientDisconnectEvent.class);
return result;
}
.....
}
//服务订阅服务
public class Nam