|
|
此文章由 fademark 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fademark 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 fademark 于 2015-8-14 15:27 编辑
最近公司的业务,经常会需要做一些scheduler类型的app,有的是每分钟fire,有的是每天,每周或者每个月fire一次。如果遇到时间冲突,等上个job结束后才开始新的job,每个job一般涉及到以下类型的任务:
1. 从Remote FTP/SFTP 下载文件,或者API call得到数据, 导入SQL Server,
2. 从SQL server里面取data, Complex join between tables, aggregate 等等
3. 根据具体数据要求,API call 其他web service, 得到结果update result in SQL server
4. Log result, 发notification email, 如果出错,还要把被影响的数据重新放回queue, 这样等问题修复后才可以继续retry。
问题:
1. 现在我的做法是开发了windows service类型的app(不是windows form) 然后用Quartz.net library来设置好event trigger。 目前这种app不多感觉还可以应付,不过如果以后这类型的app多了,就要维护这些services, 每次改动要用installer 安装, 并且开发web/form app来看logs等
2. 处理Dataset里面Millions of records,特别是需要每条数据做API call的时候,除了for loop, while loop, 有没有更好的方法,感觉把一大堆logic, API call写在Loop里面特别的不好。 是不是可以做个listener之类的class?
有经验的同学,有什么好的方法来实现这些Job? 特别是需要长时间来处理大量数据,有indexing 也需要不少时间处理, 还要API call其他party的web service, 有些Web service还是SOAP XML call,还要分batch不然会timeout。感觉这种fault tolerance不是一般的难manage。
谢谢 |
|