当我发现持久连接关闭时,如何有效地重新连接到外部数据库?如果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条经验 获得超7个赞
假设 ExtClient 有一个 Connect 或 Reconnect 方法。
并且还假设 BrokenPipe 错误被导出为一个可以再次匹配的变量。
那么这应该工作 if err == BrokenPipeErr { ExtClient.Connect(args ...SomeType) }
不过,这些假设很多,因此您可能应该告诉我们更多信息,例如您要连接的数据库。您正在使用哪个客户端库。以及其他此类信息。
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消