БД? В частности Oracle.
Интересует вот что: сделал микросервис на основе gin, который принимает запросы с токеном авторизации. На этапе middleware идёт в БД (Oracle), проверяет актуальность токена. Если всё ок, то идём дальше. Дальше, уже в обработчике запроса идём второй раз в базу и ещё одним запросом вытаскиваем необходимую по пользователю информацию.
Суть в чём - каждый запрос - новая сессия. Каким образом это можно прекратить?
К базе подключаюсь перед стартом gin. И сразу делаю ping, чтобы поднять коннект. Читал, что у go есть свой собстенный пул сессий и когда одна сессия освобождается, он её использует. Но если использовать db.SetMaxOpenConns(1), то сессии всё равно плодятся. Думаю, что их надо самим ораклом ограничивать. Короче запутался. Как сделать чтобы он одну сессию юзал? И можно ли?
Транзакцией?
Имеется ввиду открыть её и не коммитить пока приложение не схлопнется?
Да, тут от контекста может зависеть.... Простой вариант - пришел запрос, открыли транзакцию, получили токены, передали коннекешен в сервис, сделали его дела, закрыли транзакцию, отдали пользователю результат.
у нас есть пул коннектов, а не сессий
а коннект закрывается после этого?
в одном месте только закрываю его, через defer в main чтобы реконнектов не было не, неправильно?
мне не понятно почему вы разруливание коннекшенами и сессиями отдали либе и недовольны ею, если есть методы ручного управления ими
Вероятно я о них просто не знаю) Если можно скажите о чём речь
чуть выше ответили
Обсуждают сегодня