當我發現持久連接已關閉時,如何有效地重新連接到外部數據庫?如果ExtClient
丟失連接,它將返回err
上的「損壞的管道」。什麼是重新連接外部數據庫的良好模式?
func ListenForWork(cmdChannel <-chan *WorkCmd) {
for {
cmd, ok := <- cmdChannel
if !ok {
break
}
for { // Retry request until it's OK (`Broken pipe error` might destroy it)
_, err := ExtClient.Request(cmd.Key, cmd.Value)
if err == nil {
break
}
}
}
}
如何從這個或另一個方法以有效的方式重新連接?此代碼的任何改進也是受歡迎的。 ExtClient
不會自行重新連接,並且是全局變量。
是的,客戶端庫很蠢,我不想討論那個特定的庫。那麼司機是否應該重新連接。也許就是這麼簡單。請求方法在我這樣做之前知道錯誤,我想它也可以做一些事情。 – Gustav 2013-03-14 13:00:27