Сергей Ерин, так все верно, у вас горутина запускается один раз и канал она возвращает один раз. Сообщения вы должны читать из канала после того, как один раз его получили.
vondoglok, импорт вы не поправили. И не надо .git в конце модуля (но это не влияет на работу).
Не прикладывайте код скриншотами, пожалуйста, лучше ссылку на репу дайте. Очень неудобно по скринам искать и смотреть что-то. (Да и это против правил местных, могут забанить)
nelfo, Если хочется обойтись без очередей, тогда на ноде-сервере делаете grpc-стрим и все клиенты туда подключаются. Внутри придется реализовать ту же самую очередь, что сделана в Кафке.
Когда сообщение приходит в сервис, его надо отправить на одну любую из 30-100 нод другого сервиса? Или же надо, чтобы каждая из этих 30-100 нод другого сервиса получила сообщение?
Выглядит все нормально, значит что-то с сетью вашей.
Попробуйте выставить GOPROXY в direct, он будет качать не через кэш модулей, а напрямую с гитхаба.
И покажите, что выведет. Лучше скидывайте текстом, а не картинкой.
Андрей Пушкин, вы же можете мультиплексировать сколько угодно входящих соединений в одно исходящее, если воспринимать их не как коннекты, а как поток событий.
докер валится с ошибкой подключения к приватной репе по тайм-ауту
Влияет это напрямую, потому что го подключается к репе через гопрокси. Соли нет соединения до гопрокси, то будет как раз такая ошибка.
Если гопрокси не указан или репа упомянута в переменной GONOPROXY, тогда го попытается подключиться к гиту напрямую, используя конфиги гита (они у вас тоже могут отличаться на хосте и контейнере, кстати).
Переменные окружения, которые указывают на нужный гопрокси одинаковые на хосте и внутри докера? Хост-машина пытается идти на тот же адрес, что и сборка внутри докера?
Это как в коде напишете, вообще лучше всего большие файлы стримить на диск. Как сделано в фреймворке, который используете -- не знаю. Но это вполне может быть причиной падения, которая вызывает у вас 502.
Fiber не логирует вообще никаких обращений в таких кейсах
А вот это сильно зависит от того, как в файбере настроены логи. Вполне возможно что он логает после обработки запроса, тогда даже если запрос доходит до приложения, лога вы не увидите. Добавьте свой лог, который бы срабатывал именно при приеме запроса (поставьте перед файбером мидлварю свою, например).
calculator212, как по мне, функция Where(sq.And{}) у сквирела это и есть "фильтры, которые передает пользователь", так и не понял, чем отличается от этого то, что вы хотите. Там sq.And это как раз массив предикатов.
calculator212, нет же, в сквирел запрос билдился динамически на рантайме, вы можете его по частям билдить и добавлять или не добавлять какие-то поля или условия в зависимости от логики вашего кода.
Надо обрабатывать данные, которые по этому каналу к вам приходят. Например через range