当我发现持久连接已关闭时,如何有效地重新连接到外部数据库?如果ExtClient
失去连接,它将返回“Broken pipe” on 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
不会自行重新连接,并且是一个全局变量。