上下文
...MBean 的主题...主要目的是暴露要管理的资源。
没错。 (GemFire) 可以使用 JMX 查询和更改作为 MBean 公开的资源,具体取决于 MBean 为资源公开的内容(例如 Region、DiskStore、Gateway、AEQ 等)。
然后,使用 JMX API 的应用程序和工具可以使用 GemFire 的 JMX 接口。 GemFire 的 Gfsh(命令行 shell 和管理工具)以及 Pulse(Web 监控工具)都是 JMX 客户端的示例,也是您可以使用 JMX 编写的各种应用程序。
您还可以使用 jconsole 或 jvisualvm 等标准 JDK 工具连接到 GemFire 管理器(管理集群中的节点,该节点联合集群中所有成员的视图,并能够从经理)。有关详细信息,请参阅 GemFire 的 section in the User Guide on Management。
与GemFire Callbacks 相比,对等/客户端缓存应用程序可以使用回调(例如 CacheListener)来注册对某些类型事件的兴趣,例如区域条目创建/更新等。可以使用其他回调,例如 CacheLoaders在缓存未命中时读取外部数据源(例如 RDBMS)。同样,CacheWriter 可用于“直写”到缓存(区域)创建/更新上的外部数据源,或者可能与 AEQ/AsyncEventListener 异步执行“后写”以外部数据源。
还有许多其他回调和可以使用这些回调的方式,但几乎所有回调都以编程方式在 GemFire 客户端/对等缓存应用程序中用于“接收”某种类型的通知。
有关详细信息,请参阅 Events and Event Handling 上的 GemFire 用户指南。
回答
现在,在“发送”通知方面,GemFire 会代表您的应用程序进行大量分发。 JMX 主要用于发送有关管理更改的通知......添加了一个 Region,更改了驱逐策略,部署了一个 Function,等等。相比之下,GemFire 在数据更改时向集群中感兴趣的其他成员发送分发事件事件。 “感兴趣的”成员通常包括集群中托管相同区域并具有相同键/值的其他节点,这些节点需要更新,并且在某些情况下以原子方式(在 TX 中)以保持一致性。
现在,如果您想从应用程序发送通知,那么您最好使用 Spring 和 Spring Data GemFire 来配置和访问 GemFire。 Spring 提供了卓越的support for application messaging。
当然,还可以选择其他选项,包括JMS, which Spring provides integration support。
总而言之,发送的事件/通知和使用的分发机制很大程度上取决于事件/通知类型。同样,通知的方式(JMX 通知与 GemFire 回调)也取决于消息的类型和目的。
抱歉冗长的解释;它是加载/广泛的问题和复杂的主题,可能会因用例而有很大差异。
希望这会有所帮助(一点点;-)