Можно ли объединить OutOfMemoryHandler и MapStore в Hazelcast - PullRequest
0 голосов
/ 30 января 2019

Я знаю, что можно сохранить каждую запись на карте в Hazelcast для резервного копирования DataStore через реализацию интерфейса MapStore, но в нашем приложении мы этого не хотим, мы только хотим, чтобы наше приложение работало под угрозой получения OutOfMemoryИсключение: он высвобождает определенный процент данных в памяти (по принципу LRU), но во время выселения он сохраняет извлеченные записи в хранилище данных и загружает их снова, если снова запрашивается ключ ввода.

Я знаю, что интерфейс OutOfMemoryHandler существуетдля управления ситуациями OutOfMemory существует политика исключения 25% и MapStore.

Чего я не знаю, могу ли я объединить их все?

Спасибо за ответы ...

1 Ответ

0 голосов
/ 30 января 2019
  • Вы можете использовать IMap.putTransient(), чтобы поместить свои записи в IMap, но не вызывать MapStore.store ()
  • IMap.evict() (или автоматическое удаление) не будет вызывать удаление MapStore, т.е.удалить из IMap.

Однако я не предлагаю этот подход, потому что, как только jvm получит OutOfMemoryError, он может стать нестабильным, поэтому применение такой бизнес-логики будет невозможно.Также OutOfMemoryHandler может не вызываться, даже если JVM выдает OutOfMemoryError, поскольку ошибка может быть выдана из внешнего (пользовательского) потока, а Hazelcast может не быть проинформирован об этом.

...