![]() |
1
0
你很可能想重新考虑一下你的方法。听起来您有一个现有的解决方案,它涉及一个处理这些分段记录的存储过程,可能需要一些时间才能完成。存储过程假定所有临时记录都与它要处理的任务相关。在存储过程运行时对多个请求进行排队将导致问题。 您应该考虑的第一件事是将调用分成两部分:1。准备数据。2.第2条。投票结果。不要让API调用静坐等待存储过程完成,让它返回一个结果,指示数据是否已成功转移,并且客户机代码可以移交给第2部分,该部分对该作业的结果进行轮询。轮询可以针对单个作业ID,也可以基于上次轮询日期/时间和自该日期/时间以来修改的轮询记录。(这允许客户端“查看”其他用户启动的作业(如果适用) 对于临时存储过程,应将作业标识符添加到临时表中。临时表中的每一行都有一个作业ID,作业记录跟踪有关请求的一些基本详细信息,包括:请求是什么时候开始的?谁开始的?完成了吗?它的状态是什么?(排队、开始、完成、失败等)失败的原因是什么?(如果适用)应使用作业ID启动存储过程,或者查询任何未开始的作业并处理该作业或作业组的临时记录。当存储过程完成一组记录的处理后,它将更新作业行,并清除临时记录。我甚至会考虑将临时记录清除到每天下班后运行的计划任务,以避免在该表上的数据库中出现不必要的锁。(删除每晚已完成/失败的临时行和/或作业。) 寻找设计系统来扩展多个可以同时成功处理的请求,或者流程的所有步骤都可以按顺序识别和处理,但在前一个请求完成之前,不能将一个请求排队。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 7 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 7 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 7 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |