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));
      }
   }
}
Copy to Clipboard Toggle word wrap

将监听程序添加到 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
返回顶部