我正在使用以下库:compile 'net.spy:spymemcached:2.12.0'
因此,如果我这样做,如果memcachedclient未成功连接,则会给我一个错误:
mc.get(myvariable)
我想在调用mc.get()
之前检查连接状态以防止错误。
我想也许我可以检查一下:mc.getConnection().connectionsStatus()
但它只是返回一个字符串,上面写着:
Connection Status { pub-memcache-XXX active: false, authed: false, last read: 7 ms ago }
我认为只会返回SUCCESS
或FAILURE
,但会返回一个字符串。
我复制了以下相关方法:
/**
* Construct a String containing information about all nodes and their state.
*
* @return a stringified representation of the connection status.
*/
public String connectionsStatus() {
StringBuilder connStatus = new StringBuilder();
connStatus.append("Connection Status {");
for (MemcachedNode node : locator.getAll()) {
connStatus
.append(" ")
.append(node.getSocketAddress())
.append(" active: ")
.append(node.isActive())
.append(", authed: ")
.append(node.isAuthenticated())
.append(MessageFormat.format(", last read: {0} ms ago",
node.lastReadDelta()));
}
connStatus.append(" }");
return connStatus.toString();
}
我不知道,我可以解析active
变量并检查一下,但是在我调用get
之前,是否有更简单的方法来检查spymemcached是否已连接?
答案 0 :(得分:1)
您可以通过访问active
的{{1}}对象,直接检查节点是否处于活动状态,而不是解析MemcachedNode
变量。您可以按如下所示实现它:
MemcachedClient
您可以for (MemcachedNode node : mc.getNodeLocator().getAll()) {
if (!node.isActive()) {
System.out.println("Failed to connect to Memcached server");
mc.shutdown();
//Handle accordingly
}
}
使用mc.shutdown()
继续重新连接到服务器,导致程序挂起。