我们有一个由ABP开发的服务,它有一些后台作业,一些后台作业是由业务操作触发的,而某些后台作业是由计时器触发的。
现在,我们在负载平衡下部署服务,然后遇到了麻烦。场景是,主机服务1正在运行,同时服务1中正在运行后台作业,然后我们启动主机服务2(在此之前,例如通过维护,它被停止了),因为这两个服务1服务2和服务2使用相同的数据库,因此启动服务2时,它将从数据库中读取未完成的后台作业,然后运行它。但是这些作业已经由服务1处理,并且会导致某些意外结果。
对于我来说,我的问题是如何解决它以及最佳实践是什么?
答案 0 :(得分:0)
您需要将后台作业编写为不与其他实例重叠。
使用IsItRunning
IsItRunning=true
。IsItRunning == false
IsItRunning=false
。您的所有实例都会开始工作,但是您的实际代码只会运行一次。