當我發(fā)現(xiàn)持久連接關閉時,如何有效地重新連接到外部數(shù)據(jù)庫?如果ExtClient失去連接,它會在 上返回“Broken pipe” 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不會自行重新連接并且是一個全局變量。
2 回答

慕姐4208626
TA貢獻1852條經(jīng)驗 獲得超7個贊
假設 ExtClient 有一個 Connect 或 Reconnect 方法。
并且還假設 BrokenPipe 錯誤被導出為一個可以再次匹配的變量。
那么這應該工作 if err == BrokenPipeErr { ExtClient.Connect(args ...SomeType) }
不過,這些假設很多,因此您可能應該告訴我們更多信息,例如您要連接的數(shù)據(jù)庫。您正在使用哪個客戶端庫。以及其他此類信息。
- 2 回答
- 0 關注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消