【发布时间】:2023-04-09 11:41:01
【问题描述】:
与this question 相关,我已经使用
设置了一个 Spring Data Geode 客户端应用程序@EnableClusterDefinedRegions(clientRegionShortcut=ClientRegionShortcut.CACHING_PROXY)
通过确保所有类都是自动装配的,然后使用 @Resource 在客户端上设置和实例化 Geode 服务器区域。
@Resource(name = "request")
private Region<String, Request> request;
我可以在这样的地区上车。但是,当我尝试在服务器上注册对密钥的兴趣时,spring boot 客户端会收到从其他客户端到服务器的更新。注册兴趣码:
request.registerInterestForAllKeys();
request.getAttributesMutator().addCacheListener(new myListener());
日志显示兴趣已添加到该区域:
DEBUG [main] org.apach.geode.inter.cache.GemFireCacheImpl 4388 registerInterestStarted: registerInterestsStarted: new count = 1
TRACE [main] org.apach.geode.inter.InternalDataSerializer 2194 basicWriteObject: basicWriteObject: KEYS_VALUES
TRACE [main] org.apach.geode.inter.InternalDataSerializer 1535 writeDSFID: writeDSFID 37 class=class org.apache.geode.internal.cache.tier.sockets.InterestResultPolicyImpl
TRACE [main] org.apach.geode.cache.clien.inter.OpExecutorImpl 568 executeOnQueuesAndReturnPrimaryResult: sending org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl@5e1a7d3 to backups: []
TRACE [main] org.apach.geode.cache.clien.inter.OpExecutorImpl 584 executeOnQueuesAndReturnPrimaryResult: sending org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl@5e1a7d3 to primary: Connection[1.2.3.4:40404]@613231852
TRACE [main] org.apach.geode.cache.clien.inter.AbstractOp 85 attemptSend: Sending op=RegisterInterestOp$RegisterInterestOpImpl using Connection[1.2.3.4:40404]@613231852
当另一个客户端添加或更改服务器区域上的值时,该事件不会到达 Spring Boot 客户端。不调用具有通常 afterCreate 和 afterUpdate 覆盖的 CacheListenerAdapter。
用例是动态注册和注销许多不同的密钥。
如果我使用 spring boot 应用程序本身放入本地区域,那么事件处理程序 正在 被调用。所以这不是 Spring Boot 代码的问题,这是某种连接池和服务器注册问题。
【问题讨论】:
标签: geode spring-data-gemfire spring-boot-data-geode