@setupx
Go & TS developer

Лучшее решение для фоновой проверки сделок?

В моем приложении есть сделки и мне нужно каждые 3 часа проверять все сделки с статусом "Ожидает оплаты", пришла ли оплата или нет(я сам кошелек проверяю) и, если оплата не пришла, то менять статус на "Отменен", если пришла оплата.

У меня скажем так проблема в реализации:
1) сделать с помощью Worker Pool, которому я буду передавать массив данных для проверки, а он проверяет
2) сделать с помощью RabbitMQ, которому опять же я буду передавать массив данных для проверки, а он проверяет (Уточню, что RabbitMQ уже используется в проекте и я его тащу не ради этого)

И как лучше будет запустить фоновый процесс, который каждые 3 часа будет получать массив сделок с статусом "Отменен"?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Могу предложить такой вариант:
Одна горутина для периодического запуска функции по отправке множества заданий в очередь RabbitMQ по проверке сделок, по заданию на каждую сделку. В случае сбоя в горутине, остановится цикл периодического запуска проверок состояния сделок. Или, если есть опасения насчет стабильности работы сервиса, то надежнее делегировать запуск функции планировщику задач.
И реализовать потребителя очереди заданий проверки сделок в RabbitMQ. В задании достаточно указывать идентификатор сделки.
Ответ написан
Комментировать
@qeeveex
RabbitMQ самостоятельно не сможет проверить, в любом случае нужен будет consumer.

Вам можно реализовать с помощью внутренней очереди.
В main.go запускать два сервиса, один кидает в очередь задания, второй их считывает и обрабатывает. Таким образом они будут наименее связаны с друг другом и легко покроются тестами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
30 нояб. 2024, в 22:41
500 руб./за проект
30 нояб. 2024, в 20:49
2000 руб./за проект
30 нояб. 2024, в 20:18
5000 руб./за проект