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

Ребят, может кто сталкивался. Делаю обратные апи (клиент загружает заказы

по апи, манагеры что-то меняет, статусы, что-то ещё, без разницы, долблю обратно по указанным адресам с json, что кто и когда поменял).
Сделано всё на ивентах, ивенты запускают джобы, джобы собирают данные и делают http запросы.
Проблема возникает, когда сервер клиента не отвечает. Сервер может у клиента лечь на пару часов, поэтому мы не ретраем запросы, однако, потом по просьбе клиента это иногда делать надо. Столкнулись с тем, что клиенту нужна хронология, когда, кем, какой статус был проставлен. Т.е. условно есть заказ, который сейчас уже в статусе done, а клиенту нужно выгрузить в 1С всю хронологию, когда статус был в start, когда в work итп.

Сейчас выгружаем всё руками из базы логов, но такое. Подумал, самое простое — отправлять http запросы через отдельные джобы. Тогда, в случае таймаута или другой ошибки джоба с http запросом, я в любой момент времени могу его повторить, заретраить, и он отправит именно те данные, которые были у него изначально, а не текущие данные заказа. И что-то в лоб решить не получается.

Логика сейчас такая, отказаться от фасада Http, написать на газле createRequest, отправить реквест в новый джоб, в джобе уже сделать send. Смущает, что выглядит немного громоздко. Может кто-то сталкивался с подобным или есть более элегантное решение?

3 ответов

3 просмотра

сделай аля вебхук менеджер который умеет по заданным входным данным (урл, постдата) создавать в бд запись и возвращать ид вебхука. по этому ид делай джобу которая будет слать те данные что были при создании. статус пишите туда же. если надо перезаслать клиент жмёт на кнопку вы заново делаете джобу с вебхук ид тем самым ему уйдут те данные что были а не актуальные

dev .
сделай аля вебхук менеджер который умеет по заданн...

Ну и очередность стоит в rebbitmq ложить с редисом идея плохая потеряешь данные

Trin-Zotoff Автор вопроса
Ivan Perehinskyi
Ну и очередность стоит в rebbitmq ложить с редисо...

сейчас проект небольшой, очереди раскидываются на database, с rabbitmq скорее негативный опыт, есть проект, где 1 из 100 джобов теряется в небытие с rabbitmq. хотя может просто настроено так

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта