- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
14.7 支持持续查询
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
示例 14-19 为监听器的实现。
示例 14-19 持续查询监听器的实现
在查询的过程中,任何程序发生改变时,handleEvent() 方法都将被调用。请注意 CQListener 并不需要实现任何接口,也没有要求什么特别的方法名。持续查询容器会非常智能地自动调用只有 CqEvent 参数的方法。如果这样的方法不止一个,那就需要在监听器的配置中声明方法的名字了。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论