207 похожих чатов

Всем привет. Нужен экспертно-архитектурный совет. Прикрутили телеграмм с помощью асинхронной

либы к оду. Да, возможно не лучшая идея... Суть в том, что реализация веб-хука, если его можно так назвать, заключается в поднятии треда, который я так понимаю, юзает воркер и пушит телеграмм на получение входящих сообщений.
Первый вопрос... На сколько это норм?
Второй вопрос, если мы запускаем этот тред вручную, то он живет долго... но понятно, что умирает при ребуте сервера, и сам конечно не поднимается. Как решить эту проблему?

1 ответов

30 просмотров

Мы когда реализовывали в нашем rabbitmq коннекторе такой же подход - то есть поднимали специальный тред. Так как нам тоже важно было чтобы отправка в rabbitmq была асинхронна и не влияла на работу пользователя никак. А то влруг rabbitmq лежит? Это был так называемый управляющий тред. И он уже создавал для отправки сообщения свой «child thread”. То есть есть долгоживущий тред - задача которого быть дирижером. И он создает «треды-исполнителей» по мере надобности . Архитектура оправдала себя как в распределенной архитектуре в кубере, так и на простых кейсах. Само все поднимается, само все восстанавливается. Есть гарантия что не пропустим что-то важное и не отправим сообщение из-за того что был лаг временный (сети/ rabbit перегружался и тп) Схематически архитектура нарисована прям в самом модуле на картинке https://apps.odoo.com/apps/modules/17.0/rabbitmq_connector

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта