代码之家  ›  专栏  ›  技术社区  ›  Sarvar Nishonboyev

使用rabbitMQ的任务队列

  •  0
  • Sarvar Nishonboyev  · 技术社区  · 7 年前

    我们有一个从银行系统接收发票付款信息的系统。工作原理如下:

    1. 发票是在我们的系统中创建的
    2. 发票的付款是通过银行系统完成的。银行系统从我们的系统请求发票详细信息,并返回发票详细信息
    3. 我们的系统接收付款信息,并保存付款。那么

    因此,问题是我们的系统保存了付款,但有时无法及时响应付款确认请求(30秒内),在这种情况下,银行取消付款,我们的系统不知道付款被取消。

    0 回复  |  直到 7 年前
        1
  •  0
  •   Maxim Fateev    7 年前

    您实际上是在实现有状态编排。我建议你调查一下 Cadence Workflow 能够以最小的努力支持您的用例。

    与使用队列进行任务处理相比,Cadence提供了许多其他优势。

    • 故障处理。例如,它允许执行一个任务,如果两个更新在配置的时间间隔内都不能成功,则通知另一个服务。
    • 支持长时间运行的心跳操作
    • 能够实现复杂的任务依赖关系。例如,在发生无法恢复的故障时实现调用链接或补偿逻辑( SAGA )
    • 提供对更新当前状态的完全可见性。例如,在使用队列时,您知道队列中是否有一些消息,并且需要额外的数据库来跟踪总体进度。每一个事件都有节奏地记录下来。

    看到了吗 the presentation 这超过了Cadence编程模型。