想象一下下面的情况。Windows服务不时检查数据库表中的数据。当出现一些新数据时,它将开始处理每一行。
处理由几个逻辑阶段组成,假设如下:
f 29
现在,如果发生任何异常,服务将更新DB行并设置一个标志,指示发生了错误。稍后服务将再次尝试处理该行..。这就是问题所在。
处理将从一开始开始,从第一阶段开始。在这种情况下,如果异常发生在第四阶段,如果它将一次又一次地发生,第三阶段的感兴趣的人将一次又一次地被告知。
在异常情况下完全停止行处理是不可能的,在我的情况下也不可取。理想情况下,如果有一种方法可以从上次失败的阶段开始处理,那就太好了。
现在我需要你的建议如何处理所有这些。事实上,每件事都更加复杂,因为有几种处理模式,不同的阶段等等。
提前谢谢。
更新
是的,我在数据行中有State参数:)它只是暂时不被使用。异常处理对我来说并不是什么新鲜事。
问题是:处理状态切换的最佳方法是什么?换句话说,要明确阶段号和处理方法之间的逻辑联系吗?执行流程可能非常不同,包括针对不同行的不同阶段和方法。
我希望,有更愉快的方式比写无休止的开关/大小写块为每一个新的确定?
发布于 2012-06-01 14:34:57
在您的描述中,有几种模式可以帮助解决每个问题。
If语句是非常简单的。每个工作单元都应该封装在一个try...catch块中。如果出现错误,请记录异常,并根据业务规则标记行。就实现而言,使用编程最佳实践来保持代码的整洁、模块化、整洁和有序。当您开发解决方案时,请返回特定的问题以获得更多帮助。
发布于 2012-06-01 14:39:16
向数据库表中添加一个字段,跟踪每一行的状态。例如,您可以将这个新字段称为ProcessingState。
在行遍历每个逻辑状态时,您可以更新这个ProcessingState字段,以确定该行处于哪个状态。
服务中的每个逻辑步骤应该只工作处于适当状态的行。
下面是一个例子,假设您有五个逻辑步骤要完成。你可以有以下的州;
等等。
祝好运。
https://stackoverflow.com/questions/10852149
复制相似问题