Size: a a a

2021 June 01

ЯК

Ярослав Коробейников... in Go-go!
err = ch.Qos(
     1,     // prefetch count
     0,     // prefetch size
     false, // global
   )
источник

А

Андрей in Go-go!
Тоже самое, но по размеру сообщений.
источник

ЯК

Ярослав Коробейников... in Go-go!
В байтах что ли?
источник

А

Андрей in Go-go!
Вроде да
источник

ЯК

Ярослав Коробейников... in Go-go!
Можно сказать что какой-то воркер может обрабатывать сообщения которые не больше определенного размера в байтах?
источник

ЯК

Ярослав Коробейников... in Go-go!
Интереснооооооо)
источник

J

Johnny in Go-go!
Если английский знаешь тогда этот ресурс неплохо объяснит
https://youtube.com/c/TechWorldwithNana
источник

ЯК

Ярослав Коробейников... in Go-go!
А знаете что ещё странно? ну это уже чисто гошный вопрос, есть два цикла фор в форе, внутренный вор подписан
for {
 someLoop:
   for {
     select {
     case someErr := <-errChan:
       break someLoop
     }
   }
   log.Println("After break readMessagesLoop!")

   if err := conn.Close(); err != nil {
     log.Printf("[main] conn.Close Error: %v", err)
   }

   if err := ch.Close(); err != nil {
     log.Printf("[main] ch.Close Error: %v", err)
   }

   log.Println("Restart worker")
 }


(Надеюсь код номрально вставился)

Так вот, у меня в консоли высвечивается
After break readMessagesLoop!

ПОтом
[main] conn.Close Error: Exception (504) Reason: "channel/connection is not open"


И всё) дальше код почему то не едёт, хотя должен был во внешнем лупе заново начаться, если закоментриую закрытие коннекшенов и каналов, то всё нормально крутиться,))) Очень странно))))
источник

ЯК

Ярослав Коробейников... in Go-go!
По факту код должен был без проблем дойти до конца же и высветить
log.Println("Restart worker")

И начаться опять, но нет, буквально последний лог еррора и всё, стоит на месте, не паникует ничего)

Если закоментировать именно
if err := conn.Close(); err != nil {
     log.Printf("[main] conn.Close Error: %v", err)
   }

   if err := ch.Close(); err != nil {
     log.Printf("[main] ch.Close Error: %v", err)
   }

Эту часть, то всё будет дозодить до
log.Println("Restart worker")

и начинаться цикл заново)
источник

ЯК

Ярослав Коробейников... in Go-go!
worker-2      | 2021/06/01 05:49:29 After break readMessagesLoop!
worker-2      | 2021/06/01 05:49:29 [main] conn.Close Error: Exception (504) Reason: "channel/connection is not open"
worker-1      | 2021/06/01 05:49:29 After break readMessagesLoop!
worker-1      | 2021/06/01 05:49:29 [main] conn.Close Error: Exception (504) Reason: "channel/connection is not open"
worker-3      | 2021/06/01 05:49:29 After break readMessagesLoop!
worker-3      | 2021/06/01 05:49:29 [main] conn.Close Error: Exception (504) Reason: "channel/connection is not open"
источник

AK

Anup Kuplu in Go-go!
подскажите, стоит читать ?

https://t.me/Golang_google/355
источник

w

whoami in Go-go!
Личное мнение: стоит, но без проработки примеров кода, лучше не браться
источник

S

Sergey in Go-go!
Я вот как раз без проработки пробежался, реально теряешь нить после середины
источник

АК

Александр Костюченко... in Go-go!
а зачем вам select в данном примере, если вы читаете только из 1 канала? уберите его и запустите, (только добавьте if на someErr, ну точнее ok, хотя смотря что вам нужно))
источник

ЯК

Ярослав Коробейников... in Go-go!
Это для примера) не хотел весь листинг засовывать)
источник

ЯК

Ярослав Коробейников... in Go-go!
И проблема же не в селекте)
источник

ЯК

Ярослав Коробейников... in Go-go!
Проблема почема почему-то в них
if err := conn.Close(); err != nil {
     log.Printf("[main] conn.Close Error: %v", err)
   }

   if err := ch.Close(); err != nil {
     log.Printf("[main] ch.Close Error: %v", err)
   }

что ли какимто образом)
источник

АК

Александр Костюченко... in Go-go!
1. в вашем примере кода непонятно что за conn и что за ch, откуда они беруться и что с ними до кода происходит.
2. Вы в цикле закрываете канал, но при любом чтении из канала ошибок - вы завершаете цикл (насколько я знаю, из канала всегда (условно) можно считать значение. пусть даже и нулевое для типа канала, а значит вы всегда (при условии что канал ошибок не закрыт) что-то там получаете и завершаете цикл.
Но проблема в том что далье по коду вы хотели закрыть коннект и канал, но т.к цикл кончился раньше - вы этого не делаете
источник

АК

Александр Костюченко... in Go-go!
засуньте  в defer закрытие conn и ch и попробуйте. Ну это если я верно понял задачу
источник

ЯК

Ярослав Коробейников... in Go-go!
Да мы там реббит обсуждали выше, это конекшн и канал ребита)
источник