У нас есть система, которая получает информацию об оплате счетов из банковской системы.Это работает так:
- В нашей системе создается счет
- Оплата счета производится через банковскую систему.Банковская система запрашивает реквизиты счета из нашей системы, и она возвращает реквизиты счета
- Банковская система проходит процесс оплаты и отправляет реквизиты платежа в нашу систему, и она будет ждать подтверждения в течение 30 секунд.Если банковская система не получает подтверждающего сообщения в течение 30 секунд, банк отменяет платеж, но не сообщает нашей системе об отмене.
- Наша система получает платежную информацию и сохраняет платеж.Затем отправляет подтверждающее сообщение в банк.Но иногда, из-за проблем с сетью или системой, подтверждающее сообщение не будет доставлено в течение 30 секунд, и мы не знали о статусе отмененного сообщения.
Итак, проблема в том, что наша система сохраняет платеж, но иногдане может своевременно ответить на запрос подтверждения платежа (в течение 30 секунд), в этом случае банк отменяет платеж, и наша система не знает, что платеж отменен.
Я разработал решение, которое проверяет каждый платежЕсли платеж прошел успешно (через 30 секунд после получения платежа), отправив запрос на проверку способа оплаты, Банк предоставил.Задачи (отправка идентификатора платежа в метод check_payment банковской системы - он возвращает статус платежа) выполняются в отдельных потоках с использованием пула потоков среды Spring.Но я боюсь, что это не лучшее решение, так как существует риск переполнения пула потоков в случае сбоя сети.
Какие решения вы бы порекомендовали?Можем ли мы использовать RabbitMQ для этой проблемы?