[英]spymemcached: how can I tell whether memcached had connected successfully?
我正在使用以下庫: 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
但是會返回一個字符串。
該方法的文檔在這里: https : //github.com/couchbase/spymemcached/blob/master/src/main/java/net/spy/memcached/MemcachedConnection.java
我復制了以下相關方法:
/**
* 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
變化,檢查,但沒有檢查spymemcached是否連接之前,我打電話更簡單的方法get
它?
相反解析的active
變化,你可以直接檢查節點是主動或不通過訪問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()
因為MemcachedClient
繼續重新連接到服務器,導致程序掛起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.