Как я могу эффективно подключиться к внешней базе данных, когда узнаю, что постоянное соединение не работает? Если 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