zoukankan      html  css  js  c++  java
  • C# ABP源码详解 之 BackgroundJob,后台工作(一)

    本文归属作者所有,转发请注明本文链接。

    1. 前言

    ABP的BackgroundJob,用来处理耗时的操作。比如客户端上传文件,我们要把文件(Excel)做处理,这耗时的操作我们应该放到后台工作者去做,从而不会让用户有‘延迟’的感觉。

    ABP的backgroundJob最终运行是在一个InMemoryBackgroundJobStore中运行,它只是定义了一个Dictionary来存储job,并且遍历运行 。当然,觉得不爽可以做改造。

    2. 类图研究

    我整理了BackgroundJob一些类图,如下:

    image

    1)IRunnable,是定义了线程的开启、停止等操作。因为backgroundJob说白了就是启动线程在不停地运行。

    2)IBackgroundJobManager,定义了Job的管理,例如吧Job放到队列中运行。

    3)PeriodicBackgroundWorkerBase,控制了线程AbpTimer的运行、停止、等待等操作。

    4)IBackgroundJobStore,定义了插入、删除、更新、查询后台工作者。现在的后台工作者存储在Member中(用InMemoryBackgroundJobStore实现),你可以改造存储在数据库、云队列中。

    3. ABP Zero模块中的BackgroundJobStore

    我们打开ABP Zero模块中的backgroundjob包,只发行一个类BackgroundJobStore。它实现了IBackgroundJobStore,并且把Job放到数据库中来处理。这样虽然安全性提高了,但是性能较低,需要看我们的实际业务。

    BackgroundJobStore中有一个BackgroundJobInfo的仓储(Repository),用来存储所有的Job。

    下一篇文章,将对其进行改造。因为我们的系统是一个高并发系统

    可以关注本人的公众号,多年经验的原创文章共享给大家。

  • 相关阅读:
    Maven学习--- 搭建多模块企业级项目
    Spring @Transactional ——事务回滚
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    JVM调优总结(一)-- 堆和栈的基本概念
    Java中常见数据结构:list与map -底层如何实现
    hadoop 2.7.1安装和配置
    Hadoop基本开发环境搭建(原创,已实践)
    Hadoop下添加节点和删除节点
    iOS应用之间跳转
    iOS开发技巧
  • 原文地址:https://www.cnblogs.com/alunchen/p/7410900.html
Copyright © 2011-2022 走看看