Я использую Ehcache 2.10.6 с SpringBoot 2.0.8.RELEASE со следующей конфигурацией для репликации кеша между виртуальными машинами:
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=${ip.address}, multicastGroupPort=${multicst.port}, timeToLive=32, hostName=${hostname}"
propertySeparator=","/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=${hostname}, port=${listen.port}, socketTimeoutMillis=120000"
propertySeparator=","/>
Репликация отлично работает в начале и через некоторое время перестает работать со следующим журналом отладки:
rmiUrl is stale. Either the remote peer is shutdown or the network connectivity has been interrupted. Will be removed from list of remote cache peers
Я обнаружил, что heartBeatStaleTime
имеет значение по умолчанию ((2 * HeartBeatInterval) + 100)ms
, и я не знаю, как его изменить, используя конфигурацию ehcache или SpringBoot. Есть идеи, пожалуйста?
EDIT
Для тех, кто заинтересован, чтобы изменить значение по умолчанию, вы можете использовать следующий статический метод: MulticastKeepaliveHeartbeatSender # setHeartBeatStaleTime
Но даже при увеличении времени heartBeatStaleTime
я получаю журнал rmiUrl is stale
DEBUG. В этом обсуждении 2012 они сказали, что это проблема сети, и я не знаю, как ее решить: (