Size: a a a

2020 June 09

SZ

Sergey Zhdanov in Go-go!
Ivan Remen
Не вижу упоминаний контекста
func (session *Session) Push(data []byte) error {
   if !session.isReady {
       return errors.New("failed to push push: not connected")
   }
   for {
       err := session.UnsafePush(data)
       if err != nil {
           session.logger.Println("Push failed. Retrying...")
           select {
           case <-session.done:
               return errShutdown
           case <-time.After(resendDelay):
           }
           continue
       }
       select {
       case confirm := <-session.notifyConfirm:
           if confirm.Ack {
               session.logger.Println("Push confirmed!")
               return nil
           }
       case <-time.After(resendDelay):
       }
       session.logger.Println("Push didn't confirm. Retrying...")
   }
}
источник

VM

Vladislav Milenin in Go-go!
Можете обертку над методом написать и реюзать
источник

SZ

Sergey Zhdanov in Go-go!
ну там же есть пример
источник

SZ

Sergey Zhdanov in Go-go!
готовая обертка
источник

SZ

Sergey Zhdanov in Go-go!
можно посмотреть как работает
источник

SZ

Sergey Zhdanov in Go-go!
источник

SZ

Sergey Zhdanov in Go-go!
@bhychik читайте с начала и до первого примера
источник

IR

Ivan Remen in Go-go!
Да, спасибо. Не сразу сообразил что это оно. Думал есть какие-то конфиги более удобные, как для http клиента или для s3.
источник

SZ

Sergey Zhdanov in Go-go!
еще можете вот тут поковыряться в коде https://github.com/reddec/fluent-amqp там как раз с контекстом
источник

VL

V L in Go-go!
Никита
В общем без понятия как вписать транзакции в случае, когда у нас на каждый юзкейс свой интерфейс к хранилищу. Подскажите, что можно сделать
Я же правильно понимаю, что у вас транзакция не должна захватывать несколько юзкейсов одновременно?
источник

DP

Daniel Podolsky in Go-go!
Никита
В общем без понятия как вписать транзакции в случае, когда у нас на каждый юзкейс свой интерфейс к хранилищу. Подскажите, что можно сделать
коллега, да в чем вопрос-то?
источник

Н

Никита in Go-go!
V L
Я же правильно понимаю, что у вас транзакция не должна захватывать несколько юзкейсов одновременно?
несколько юзкейсов – конечно нет. Но в рамках одного юзкейса у нас есть несколько событий, которые надо отработать все или ни одного. Собственно стандартные транзакции
источник

DP

Daniel Podolsky in Go-go!
ну так на эти события есть отдельный метод, внутри у него отключение автокоммита и коммит/роллбек в конце
источник

Н

Никита in Go-go!
Daniel Podolsky
ну так на эти события есть отдельный метод, внутри у него отключение автокоммита и коммит/роллбек в конце
Метод, который возвращает какой-то специальный обьект транзакции, который можно кидать в методы хранилища, или же он возвращает интерфейс хранилища, где под капотом вместо пула коннектов открытая ттранзакция?
источник

Н

Никита in Go-go!
Я делаю сейчас так
источник

Н

Никита in Go-go!
Но это работает только когда у нас один интерфейс для всей БД
источник

DP

Daniel Podolsky in Go-go!
я, коллега, не понимаю

зачем вам транзакция снаружи dal?
источник

AS

Alexander Shavelev in Go-go!
Никита
Я делаю сейчас так
у тебя интерфейс сторедж должен реализовать методы, условно CreateUser, DeleteUser

а транзакцию он создает "внутри", передавая если надо между приватными методами
источник

Н

Никита in Go-go!
Так у нас же реализация стореджа общий на все юзкейсы. Иннициализировали пулл коннектов, прокинули в юзкейсы. Если я открою транзакцию в этом же обьекте, то как-бы другие не смогут этого сделать
источник

DP

Daniel Podolsky in Go-go!
задача в чем?
источник