【问题标题】:Difference between using Listeners and MBean to send Notifications?使用 Listeners 和 MBean 发送通知的区别?
【发布时间】:2015-03-18 08:50:15
【问题描述】:

我一直在阅读有关 GemFire 分布式数据存储/管理/缓存系统如何执行通知的信息。在阅读这篇文章时,我有这个问题。

Gemfire 似乎在使用 MBean 在事件期间创建通知。使用 MBean 创建通知而不是实现基于侦听器的方法有何不同/合适? (不仅在 GemFire 中,而且在一般情况下)

注意:我对 MBean 主题非常陌生。只是理解它的主要目的是公开要管理的资源。

【问题讨论】:

    标签: listener jmx mbeans gemfire spring-data-gemfire


    【解决方案1】:

    上下文

    ...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 回调)也取决于消息的类型和目的。

    抱歉冗长的解释;它是加载/广泛的问题和复杂的主题,可能会因用例而有很大差异。

    希望这会有所帮助(一点点;-)

    【讨论】:

    • 哇,写的很详细。谢谢.. 现在让我使用给定的链接进行下一级阅读
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2015-08-19
    相关资源
    最近更新 更多