Spring Data Geode регистрирует интерес не получая события - PullRequest
1 голос
/ 14 февраля 2020

Относительно к этому вопросу Я установил клиентское приложение Spring Data Geode с

@EnableClusterDefinedRegions(clientRegionShortcut=ClientRegionShortcut.CACHING_PROXY)

и, убедившись, что все классы подключены автоматически, затем с помощью @Resource регионы сервера Geode настроены и созданы на клиенте.

@Resource(name = "request")
private Region<String, Request> request;

Я могу поставить и получить регионы, как это. Однако, когда я пытаюсь зарегистрировать интерес к ключу на сервере, обновления от других клиентов к серверу получает клиент весенней загрузки. Код интереса регистра:

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

Когда другой клиент добавляет или изменяет значение в регионе сервера, это событие не является добираемся до весеннего загрузочного клиента. CacheListenerAdapter с обычными переопределениями afterCreate и afterUpdate не вызывается.

Вариант использования - регистрация и отмена регистрации на множестве различных ключей на лету.

Если я использую пружину Загрузите само приложение, чтобы поместить его в локальный регион, затем вызывается обработчик события . Так что проблема не в весеннем загрузочном коде, это проблема регистрации пула соединений и сервера.

1 Ответ

1 голос
/ 18 февраля 2020

Проблема была в том, что у моего application.properties было

spring.data.gemfire.cache.client.durable-client-id=myListener

По какой-то причине надежный клиент не может запустить CacheListenerAdapter

...