Package top.wcpe.beacon.agent.kit
Class BeaconAccess
java.lang.Object
top.wcpe.beacon.agent.kit.BeaconAccess
Beacon 下游接入便捷门面。
把业务插件接入 Beacon 的样板收口成几个「正确」的便捷方法,杜绝常见踩坑——尤其是
回退判据只看 BeaconAgentProvider.isAvailable()、绝不看 BeaconAgent.connected()。
控制面短暂不可用时 agent 仍用本地快照 fail-static、配置仍可读,若误用 connected() 当回退判据
会把这种「在场但暂未连上」误判为「不可用」而回退到本地文件,造成 split-brain。
本类不是有状态静态单例:可自由 new,内部不缓存 agent 引用(每次调用现取门面,
避免持有已注销的旧实例)。订阅返回 BeaconSubscription 句柄,由调用方保管并 close()。
边界(守 ADR-0005,实现不进 kit):
- kit 不碰线程调度(不引 okhttp/kotlinx/TabooLib)。发现查询走同步 HTTP,请在异步线程调用; 变更回调在 agent 异步线程触发,重活下游自行切线程。
- 本地文件回退不在 kit:agent 不在场时读配置便捷方法返回空,要不要回退本地文件、怎么读,
由下游自行决定(kit 只用
isBeaconPresent()告知是否在场)。 - 身份/zone/ORM 仍归 CoreLib;
identity()仅薄转发,不重复实现。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionOptional<top.wcpe.beacon.agent.api.AgentIdentity> awaitIdentity(long timeoutMillis) 有界等待 agent 首次注册完成后取身份;agent 不在场、或等待超时仍未就绪时为空。configFormat(String dataId) 取某 dataId 的格式(yaml / properties / json);agent 不在场或无此项时为空。取某 dataId 的单项 md5;agent 不在场或无此项时为空。dataIds()列出当前所有有效配置项的 dataId;agent 不在场时为空列表。当前有效配置整体 md5;agent 不在场或尚未收敛时为空。Optional<top.wcpe.beacon.agent.api.AgentIdentity> identity()当前 agent 身份(薄转发);agent 不在场时为空。List<top.wcpe.beacon.agent.api.ServiceInstance> instancesInGroup(String group) 列出某大区(group)下全部在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。List<top.wcpe.beacon.agent.api.ServiceInstance> instancesInZone(String group, String zone) 列出某 zone 下在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。booleanBeacon agent 是否在场(下游回退判据)。List<top.wcpe.beacon.agent.api.ServiceInstance> query(top.wcpe.beacon.agent.api.DiscoveryQuery query) 按条件过滤在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。取某 dataId 的合并后原始文本;agent 不在场或无此项时为空。subscribeConfig(top.wcpe.beacon.agent.api.ConfigChangeListener listener) 订阅有效配置变更。
-
Constructor Details
-
BeaconAccess
public BeaconAccess()
-
-
Method Details
-
isBeaconPresent
public boolean isBeaconPresent()Beacon agent 是否在场(下游回退判据)。只看
BeaconAgentProvider.isAvailable()。为false时下游可回退到本地文件; 为true时即便控制面暂未连上(fail-static)也应继续走 Beacon,不要回退(防 split-brain)。 -
identity
当前 agent 身份(薄转发);agent 不在场时为空。 -
awaitIdentity
有界等待 agent 首次注册完成后取身份;agent 不在场、或等待超时仍未就绪时为空。供下游(如 CoreLib)在自身启动阶段「优先取 Beacon 身份、超时降级本地」用: 在场且就绪→返回含权威 zone 的身份;不在场或超时→返回空,由下游回退本地配置 + 告警。 调用线程会被阻塞至多
timeoutMillis毫秒,请勿在对延迟敏感的线程滥用。 -
rawConfig
取某 dataId 的合并后原始文本;agent 不在场或无此项时为空。 -
configFormat
取某 dataId 的格式(yaml / properties / json);agent 不在场或无此项时为空。 -
configMd5
取某 dataId 的单项 md5;agent 不在场或无此项时为空。 -
dataIds
列出当前所有有效配置项的 dataId;agent 不在场时为空列表。 -
effectiveMd5
当前有效配置整体 md5;agent 不在场或尚未收敛时为空。 -
subscribeConfig
订阅有效配置变更。注册即重放当前值;subscribe 时 agent 未就绪不会丢订阅,由下游周期调用
BeaconSubscription.pump()在 agent 转可用后补注册并重放(见其文档)。- Returns:
- 订阅句柄,由调用方保管并
close()
-
query
public List<top.wcpe.beacon.agent.api.ServiceInstance> query(top.wcpe.beacon.agent.api.DiscoveryQuery query) 按条件过滤在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。 -
instancesInZone
列出某 zone 下在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。 -
instancesInGroup
列出某大区(group)下全部在线实例(同步 HTTP,请在异步线程调用);agent 不在场时为空列表。
-