spring@scheduled with cron,如果服务在预定日期停止,我该如何处理

eaf3rand  于 2021-07-23  发布在  Java
关注(0)|答案(2)|浏览(358)

所以假设我有一个系统,要求你在开始使用它之前添加一些平衡。因此,假设它将在每月30日扣除/支出您的余额。因此,我使用axonframework结合spring计划注解,因此代码可能如下所示。

@CommandHandler
@Scheduled(cron = "**cron for every 30th**")
fun handle(command: ExpendNetflixUserCommand){
  if (user.balance < netflixPackage.price){
    AggregateLifecycle.apply(command.toNetflixUserDisabled())
    throw IllegalArgumentException("Insufficient balance, please add.")
  }
  AggregateLifecycle.apply(command.toNetflixUserExpended())
}

所以我的问题是,如果是在30号,我的系统将要计算这些付款,但是突然服务中断了,它在31号重新开始工作,它是否会重新计算以前的付款?如果不是的话,你能建议我怎么处理这个案子吗。

zlhcx6iw

zlhcx6iw1#

对于这个用例,我可能会使用 @Schedule 将使用 CommandGateway 发出命令!使用这种方法,这个组件是代码外部的,并带来额外的好处。其中之一就是配置 RetryScheduler 在这上面 CommandGateway 它将根据需要重试失败的命令!
查看参考指南,了解更多关于如何做到这一点的信息,以及axon为您提供了什么现成的实现!https://docs.axoniq.io/reference-guide/axon-framework/axon-framework-commands/implementations#configuring-命令网关

kxeu7u2r

kxeu7u2r2#

您可能应该考虑依赖一个更成熟的解决方案,比如springbatch,因为您可以将工作状态管理之类的东西从盒子里拿出来。

相关问题