重新连接外部数据库的好模式是什么?

当我发现持久连接关闭时,如何有效地重新连接到外部数据库?如果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不会自行重新连接并且是一个全局变量。


有只小跳蛙
浏览 164回答 2
2回答

慕姐4208626

假设 ExtClient 有一个 Connect 或 Reconnect 方法。并且还假设 BrokenPipe 错误被导出为一个可以再次匹配的变量。那么这应该工作&nbsp;if err == BrokenPipeErr { ExtClient.Connect(args ...SomeType) }不过,这些假设很多,因此您可能应该告诉我们更多信息,例如您要连接的数据库。您正在使用哪个客户端库。以及其他此类信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go