所以假设我有一个系统,要求你在开始使用它之前添加一些平衡。因此,假设它将在每月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号重新开始工作,它是否会重新计算以前的付款?如果不是的话,你能建议我怎么处理这个案子吗。
2条答案
按热度按时间zlhcx6iw1#
对于这个用例,我可能会使用
@Schedule
将使用CommandGateway
发出命令!使用这种方法,这个组件是代码外部的,并带来额外的好处。其中之一就是配置RetryScheduler
在这上面CommandGateway
它将根据需要重试失败的命令!查看参考指南,了解更多关于如何做到这一点的信息,以及axon为您提供了什么现成的实现!https://docs.axoniq.io/reference-guide/axon-framework/axon-framework-commands/implementations#configuring-命令网关
kxeu7u2r2#
您可能应该考虑依赖一个更成熟的解决方案,比如springbatch,因为您可以将工作状态管理之类的东西从盒子里拿出来。