返回介绍

14.7 支持持续查询

发布于 2025-04-22 19:57:23 字数 1028 浏览 0 评论 0 收藏

GemFire 一个非常强大的功能就是支持持续查询(Continuous Query,CQ),它提供了一个查询驱动(query-driven)事件通知功能。在传统的分布式应用中,如果数据消费者依赖于其他程序的准实时更新,就必须实现某种类型的轮询机制。这不是特别高效,也缺乏可伸缩性。而使用发布/订阅消息系统的话,应用程序收到一个事件后,通常会访问基于磁盘数据存储的相关数据。持续查询提供了极其高效的替代方案,通过 CQ,客户端应用程序可以在缓存服务器上注册一个定期执行的查询,客户端也可以提供回调,当域事件影响查询结果集状态时会调用这个方法。注意 CQ 需要客户机/服务器配置。

Spring Data GemFire 提供了 ContinuousQueryListenerContainer,它支持基于 Spring DefaultMessageListenerContainer 的编程模型,这个模型可以用于 JMS 消息驱动的 POJO。要配置 CQ,需要使用命名空间来创建 CQLC,并且为每一个持续查询注册监听器,如示例 14-18 所示。请注意,因为 CQ 使用 GemFire 的订阅机制,pool 必须将 subscription-enabled 属性设置为 true。

示例 14-18 配置 ContinuousQueryListenerContainer

P273b

示例 14-19 为监听器的实现。

示例 14-19 持续查询监听器的实现

P274

在查询的过程中,任何程序发生改变时,handleEvent() 方法都将被调用。请注意 CQListener 并不需要实现任何接口,也没有要求什么特别的方法名。持续查询容器会非常智能地自动调用只有 CqEvent 参数的方法。如果这样的方法不止一个,那就需要在监听器的配置中声明方法的名字了。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。