基于事件的Kafka +计划设计

时间:2019-07-21 14:18:09

标签: apache-kafka kafka-consumer-api spring-kafka kafka-producer-api event-based-programming

在使用kafka的基于事件的电子商务系统中,您如何处理待定付款状态的订单自动过期?

通常,每当有客户要求创建新订单时,都会向主题发送一条消息,以便库存服务可以使用和保留客户订单中的物品。订购 的状态将转换为pending_payment。对于处于pending_payment状态的每个订单,订单中的项目将保留30分钟。我想使订单自动到期并以可扩展的方式回滚项目的数量。

我能想到的一种方法是在30分钟内安排将要执行的cron作业,该作业将使特定订单到期并退回该商品的数量,但是有没有更有效的方法呢? 为每个订单创建Cron作业是否可行?

2 个答案:

答案 0 :(得分:0)

kafka中没有延迟队列功能。 也没有办法“插入”任何经纪人方面的时间保留(也没有办法保证在需要时进行时间保留处理-将其视为GC)。

所以对您问题的一般回答是,您将需要某种调度程序。

答案 1 :(得分:0)

您需要一种管理状态的方法-取决于时间。创建一个cron是可以的,但可以说很难维护,监视和扩展,特别是当您需要一台以上的服务器来处理它们时。

另一种解决方案是使用易于使用的工作流引擎,例如zenaton(我是共同创始人)。通常,您将针对每个订单启动以您自己的编程语言编写的简单工作流程。如果此工作流在30分钟内未收到“ PaymentEvent”,则您决定联系库存服务以释放物料。

使用这样的工具,还将为您提供更大的灵活性来处理更复杂的情况,例如。如果付款在30分钟后到达,该怎么办

相关问题