Não há nada disponível para resolver isso fora da caixa. Mas você pode criar subclasses de MemcachedBackupSessionManager e usar o método backgroundProcess
(que é chamado pelo tomcat a cada segundo ou a cada 10 segundos, sem ter certeza disso) para executar ping em seus memcacheds configurados. Uma implementação muito simples se parece com isso:
package de.javakaffee.web.msm;
public class MyMsm extends MemcachedBackupSessionManager {
@Override
public void backgroundProcess() {
super.backgroundProcess();
final MemcachedNodesManager nodesManager = _msm.getMemcachedNodesManager();
// got through all configured node ids and ping each memcached
// with a dummy key.
// _msm.newSessionId("ping") generates e.g. ping-n1 for a nodeId n1
// so this will be routed the related memcached node
for (String nodeId : nodesManager.getPrimaryNodeIds()) {
// use async here so that no error handling is needed
_msm.getMemcached().asyncGet(_msm.newSessionId("ping"));
}
}
}
Então você coloca essa classe em jar, coloca o jar em $ CATALINA_HOME / lib além de msm jars e muda o nome da classe Manager para className="de.javakaffee.web.msm.MyMsm"
.
Se você gosta, também pode bifurcar o msm e colocar um pedido pull com uma adição que torne isso configurável: -)