我们有一个从银行系统接收发票付款信息的系统。它是这样的:
因此,问题在于我们的系统保存了付款,但有时无法按时响应付款确认请求(在30秒之内),在这种情况下,银行取消了付款,而我们的系统不知道付款被取消了。 / p>
我开发了一种解决方案,通过发送请求以检查银行提供的付款方式来检查付款是否成功(在收到付款后30秒后)。使用Spring框架的线程池在单独的线程中执行任务(将付款ID发送到银行系统的check_payment方法-它返回付款状态)。但是我担心这不是最好的解决方案,因为当网络出现故障时,存在线程池满的风险。
您会推荐什么解决方案?我们可以使用RabbitMQ解决此问题吗?
答案 0 :(得分:0)
您实质上是在实现有状态业务流程。我建议您研究Cadence Workflow,它能够以最小的努力来支持您的用例。
与使用队列进行任务处理相比,Cadence具有许多其他优点。
请参见介绍Cadence编程模型的the presentation。