QRanked.com
Народ подскажите, если я из NATS прочитал json, но не смог его записать в БД из-за ошибки, как мне сообщить NATS чтобы он его не выкидывал из очереди? если я его обратно кладу в очередь при ошибке записи БД, то подписка опять срабатывает и так в цикле. В минуту 100 тысяч раз. Как быть?
Andrey
надо отправлять с требованием подтверждения
Sweety
Есть вариант взять кафку 😬😬
Andrey
Есть вариант взять кафку 😬😬
ну так в кафке тоже надо будет разобраться как делать это :)
Andrey
или к кафке прилагается кошкодевочка которая все сама настраивает? )
Sweety
ну так в кафке тоже надо будет разобраться как делать это :)
там просто сообщение из партишна не убирается когда консьюмер отработал, я к этому
QRanked.com
и там ниже есть Max In Flight что бы натс не спамил
а если кол-во попыток 25 истекло к примеру, потом как начать читать бушер опять? рестартовать сервис или есть дургие способы?
QRanked.com
Есть вариант взять кафку 😬😬
сложно для небольшого проекта
Sweety
Я натс с КХ первый раз щупал помню
Sweety
А дока по натсу есть на русском?
Rostislav
а если кол-во попыток 25 истекло к примеру, потом как начать читать бушер опять? рестартовать сервис или есть дургие способы?
если в течении определенного времени не приходит акк на определенное сообщение, то сервер его переотправляет
Rostislav
время задается при создании подписки вроде
Rostislav
на клиенте
QRanked.com
а для реконекта БД ставить таймауты переподключения или подряд долбить пока не подключится?
Sweety
а для реконекта БД ставить таймауты переподключения или подряд долбить пока не подключится?
можешь в конфиге указывать сколько раз максимум делать реконект да и все
Sweety
где-нибудь в config.yaml
Sweety
про какую бд речь?
Наверно про ПГ
Rostislav
а, я думал вопрос с натсом связан
QRanked.com
вопрос с натсом, хочу обрабоать ситуацию если прочитаное не удалось записать в базу
QRanked.com
ребята выше ответили
Spiderman
ребята как сделать фильтрацию в монго?
Spiderman
ой
Spiderman
я здесь просто переменные попутал
Spiderman
все работает!
Alexandr
Добрый день, как всетаки хранить указатели в массиве от объектов разных типов type E struct { Pointer map[int][]*any } func Fc[T Any](e *E, id int, t T) []*T { arr := make([]*T, 100) e.Pointer[id] = arr return arr } Есть идеи?
Null
👣 Zmap-ProxyScanner - быстрый способ поиска прокси. Поможет найти 2000-5000 рабочих http, socks4, socks5 прокси за одно сканирование. ⚙️ GitHub #github #soft #Go @Golang_google
Alexandr
Пока что не до конца понятна задача.
В функцию передается ид и структура объекта, под эту структуру создается массив указателей под обьекты вот эти указатели хочу записать в мапу что бы было доступно по E.Pointer[id][id2]. Можно было бы через unsafe но на сколько я знаю он не привяжет сам указатель и GC соберет потом этот массив
Vladislav
притом сразу с дженериками, нафига они если все равно ссылки на объекты
Alexandr
Нет, это не задача, это попытка ее решения или идея в одном из направлений. Сама задача еще не озвучена.
Реализация Entity component system Вот для хранения данных компонентов и встает данный вопрос
Alexandr
идея в том что мы передаем структуру(может быть любой), под данную структуру создается массив указателей, при необходимости создается обьект через рефлект а указатель на него кладется в данный массив
Victor
массив указателей на ее объекты-компоненты?
Несин Данила
Добрый день! Пишу внутренний портал инструментов, возник архитектурный вопрос: У меня есть сервисный пакет отправки почты, который так же использует иные пакеты https://go.dev/play/p/i-5L_bVpy6A Как было бы более правильно регистрировать ошибки в работе данного модуля (и в целом отдельных функциональных частей): 1. Передавать ошибку "вверх"/вызывающему, он регистрирует её в журнале и отрабатывает свой сценарий ошибки 2. Сразу внести запись в журнал ошибки, передать её вызывающему, а тот отрабатывает свой сценарий ошибки Логгер - zap, используется глобальная переменная zap.L() Более кратко вопрос звучал бы так - где лучше проводить регистрацию ошибки в журнале - в самом используемом пакете или на уровне вызывающей функции?
Victor
скорее всего, логгер у тебя существует в контексте "приложение", думаю, там и уместно логировать. вызываемый пакет должен просто вернуть ошибку, ее обработка не его забота (если это не panic-ситуация)
Alexandr
самих сущностей может быть очень много и под каждую сущность делать экземпляр объекта дорого, по этому и надо хранить только указатель, а когда компонент добавляется в сущность уже инцелезируется сам объект и добавляется в этот массив указатель на него
Maksim
var e = [100][]any{}
Бузург
ребята а как было вывести строку наоборот
Бузург
ну в место 123
Бузург
321
Vladislav
1. ну выведи задом наперед 2. засунь в массив байт и реверсни, потом выведи
Vladislav
В стек ее.
с рекурсией и выводить по одному? тоже норм🤣
Andrei
ребята а как было вывести строку наоборот
если в либе strings за тебя это не сделали, то по 1 символу в строке заменять первый на последний, тут оно так работает в го
Vladislav
в го строки immutable
Andrei
ну это по определнию, не думаю,что он пытается это обойти)
Vladislav
ток в массив рун лучше
смотря какое тз
Alexandr
var e = [100][]any{}
var e = [100][]any{} var arr []*T e[1] = arr // Cannot use 'arr' (type []*T) as the type []any
Vladislav
данеужели
Aleks
А может туда просто interface{}? :)
Victor
А ты это с какого языка свою "идею" тащишь то?
это не из языка, а из геймдева идея. по организации сущностей
Victor
(как повествует Википедия)
Victor
var e = [100][]any{} var arr []*T e[1] = arr // Cannot use 'arr' (type []*T) as the type []any
ну вариант либо interface{} и ручные касты, либо создавать общий интерфейс-констрейнт и использовать дженерики
Andrey
ну вариант либо interface{} и ручные касты, либо создавать общий интерфейс-констрейнт и использовать дженерики
Жаль только человек этот это не потянет. Он в го не шарит. Да и то что он делает очень очень не рекомендуют сами разрабы делать.
Andrey
Какие разрабы не рекомендуют?
https://go.dev/doc/faq#pointer_to_interface
Evgeny
Можете закидать тряпками, но чем такое решение не устраивает
Evgeny
Alexandr
Без дженериков, и надо присвоить массив ссылок к переменной
Юра (Юрий Александрович)
Я до сих пор не понимаю, какая решается задача... Не то чтобы я без этой информации жить не мог, но странно как-то. Нельзя все время "смотреть под ноги", надо иногда смотреть вперед и вверх. 1) что мы хотим получить? 2) Зачем нам это надо?
Evgeny
А дженерики чего плохого сделали)))
Anton
massivSsilok
Anton
а че не slaisSsilok?)
Илья
А дженерики чего плохого сделали)))
А зачем вам хранить слайс ссылок в слайсе интерфейсов?
Илья
Лучше не пренебрегать магическим словом any, а пытаться строго типизировать такие участки кода