与this question相关,我使用
@EnableClusterDefinedRegions(clientRegionShortcut=ClientRegionShortcut.CACHING_PROXY)
通过确保所有类都是自动生成的,然后使用@Resource在客户机上设置和实例化Geode服务器区域。
@Resource(name = "request")
private Region<String, Request> request;我可以把这些地方放在这里。但是,当我尝试注册对服务器上的密钥感兴趣时,其他客户端到服务器的更新将由spring引导客户端接收。登记利息代码:
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引导客户端。通常使用CacheListenerAdapter和afterUpdate重写的afterCreate不会被调用。
用例是动态地注册和注销许多不同的键。
如果我使用spring引导应用程序本身放置到本地区域,那么将调用事件处理程序。所以这不是spring引导代码的问题,这是连接池&服务器注册的某种问题。
发布于 2020-02-18 12:41:37
问题是我的application.properties
spring.data.gemfire.cache.client.durable-client-id=myListener
由于某些原因,持久客户端无法运行CacheListenerAdapter。
https://stackoverflow.com/questions/60226331
复制相似问题