2

我目前正在构建一个基于 JMX 的监控设施。被监控的系统已经以发布/订阅的方式暴露了一些KPI,即自定义编码的监控客户端可以连接到系统,激活和订阅这些KPI,然后系统会在有新的KPI值可用时立即通知客户端. 由于这些 KPI 的评估可能在计算上很昂贵,因此仅评估那些至少具有一个订阅客户端的 KPI。

我现在的任务是扩展系统,提供基于 JMX 和 JMX 通知的监控服务器,以便任何 JMX 客户端都可以激活、订阅和接收这些 KPI。

我面临的问题是:每个连接的客户端都会更改服务器上的某些状态(即激活 KPI 并注册一些侦听器),一旦客户端的会话完成或由于连接丢失而失败,我需要立即清理这些状态。

关于会话,JMX 规范在第 13.1 章中声明:

会话在客户端上具有状态,特别是其侦听器(请参阅第 208 页的第 13.4 节“添加远程侦听器”)。会话不一定在服务器上有状态,对于本规范定义的两个连接器,它没有。

有谁知道允许维护某些会话状态的 JMXConnectorServer 实现?任何实现这种服务器的代码示例、教程或指导也将受到高度赞赏。

4

1 回答 1

0

也许您可以拥有类似 clientId 的东西,当您注册侦听器时,您将 clientId 作为参数,因此服务器会有一些客户端信息。

当客户端轻轻关闭时,可以调用JMX服务器的方法清除监听器,或者如果客户端丢失连接无法轻轻关闭,可以在客户端有一个监控线程,注册谁正在侦听和关闭,并在必要时通知 JMX 服务器。

于 2017-09-02T03:54:09.413 回答