【发布时间】:2026-01-30 17:35:01
【问题描述】:
我目前正在构建一个基于 JMX 的监控设施。被监控的系统已经以发布/订阅的方式公开了一些KPI,即自定义编码的监控客户端可以连接到系统,激活和订阅这些KPI,然后系统会在有新的KPI值可用时立即通知客户端.由于这些 KPI 的评估可能在计算上很昂贵,因此仅评估那些至少具有一个订阅客户端的 KPI。
我现在的任务是扩展系统,提供基于 JMX 和 JMX 通知的监控服务器,以便任何 JMX 客户端都可以激活、订阅和接收这些 KPI。
我面临的问题是:每个连接的客户端都会更改服务器上的某些状态(即激活 KPI 并注册一些侦听器),一旦客户端的会话完成或由于连接丢失而失败,我需要立即清理这些状态。
关于第 13.1 章中JMX specification 声明的会话:
一个会话在客户端有状态,特别是它的监听器(见第 13.4 节“添加 远程侦听器”(第 208 页)。会话不一定有状态 服务器,对于本规范定义的两个连接器,它没有。
有谁知道允许维护某些会话状态的 JMXConnectorServer 实现?任何实现这种服务器的代码示例、教程或指导也将受到高度赞赏。
【问题讨论】:
-
可能不再相关,但您可以让订阅超时吗?假设某种最短刷新时间并派生一个线程,该线程遍历您的订阅并删除它们太旧。
标签: java monitoring jmx