Package top.wcpe.beacon.agent.kit
Class BeaconSubscription
java.lang.Object
top.wcpe.beacon.agent.kit.BeaconSubscription
- All Implemented Interfaces:
AutoCloseable
配置变更订阅句柄(
AutoCloseable,由调用方保管并 close())。
封装下游订阅样板,解决两类竞态:
- 注册即重放:底层
EffectiveConfig.onChange(top.wcpe.beacon.agent.api.ConfigChangeListener)只回调「之后」的变更, 首次注册成功时本句柄会用「当前有效配置」立即重放一次,下游无需自行先读一遍再订阅。 - 转可用补注册:subscribe 时若 agent 尚未就绪,本句柄不会丢订阅,而是延迟到 agent 由不可用转可用时(含 reload 后的新门面实例)补注册底层监听并重放当前值。
补注册由下游周期调用 pump() 驱动——kit 不自起线程、不碰调度(零三方依赖约束)。
下游在其既有 tick / 心跳里顺手调一次即可,成本极低、线程切换留在下游可控处。
本句柄方法线程安全:内部对状态变更同步,便于「下游 tick 线程驱动 pump」与 「agent 异步线程触发底层回调」并存。回调本身仅转发,重活仍需下游自行切线程。
-
Method Summary
-
Method Details
-
pump
public void pump()推进订阅状态:若 agent 已就绪而本句柄尚未绑定到其当前门面,则注册底层监听并重放一次当前值。由下游在既有 tick / 心跳里周期调用,用于补上「subscribe 时 agent 未就绪」「agent reload 换新门面」 两类竞态。已绑定且门面未变时本方法为幂等空操作。close 后为空操作。
-
close
public void close()注销底层监听并清空绑定,重复调用安全。- Specified by:
closein interfaceAutoCloseable
-