2.9. 客户端监听程序


客户端监听程序会在 Data Grid 集群上添加、删除或修改任何数据时提供通知。

例如,每当给定位置上温度发生变化时,以下实现会触发事件:

@ClientListener
public class TemperatureChangesListener {
   private String location;

   TemperatureChangesListener(String location) {
      this.location = location;
   }

   @ClientCacheEntryCreated
   public void created(ClientCacheEntryCreatedEvent event) {
      if(event.getKey().equals(location)) {
         cache.getAsync(location)
               .whenComplete((temperature, ex) ->
                     System.out.printf(">> Location %s Temperature %s", location, temperature));
      }
   }
}

将监听程序添加到 Data Grid 集群会为您的部署添加性能注意事项。

对于嵌入式缓存,侦听器使用与 Data Grid 相同的 CPU 内核。接收许多事件并使用大量 CPU 处理这些事件可减少 Data Grid 可用的 CPU,并减慢所有其他操作。

对于远程缓存,Data Grid 服务器使用内部进程来触发客户端通知。Data Grid Server 将事件从主所有者节点发送到注册侦听器的节点,然后再将其发送到客户端。Data Grid Server 还包括一种后端机制,如果客户端监听程序处理事件太慢,则延迟写操作缓存。

过滤监听程序事件

如果在每次写入操作上调用监听程序,则数据网格可生成大量事件,在集群内和外部客户端创建网络流量。它都取决于每个监听器注册了多少个客户端、它们触发的事件类型,以及数据在 Data Grid 集群上如何更改。

作为远程缓存的示例,如果您在一个侦听器中注册了十个客户端发出 10 个事件,则数据网格服务器会完全通过网络发送 100 个事件。

您可以使用自定义过滤器提供 Data Grid 服务器,以减少到客户端的流量。过滤器允许数据网格服务器首先处理事件,并确定是否将它们转发到客户端。

持续查询和监听程序

持续查询允许您接收匹配条目的事件,并提供了部署客户端监听程序和过滤监听器事件的替代方案。当然,查询还有额外的处理成本,但如果您已经索引缓存并执行查询,则可能需要使用持续查询而不是客户端监听程序。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部