插件开发技术说明(18)---异步任务队列使用
来源:互联网 发布:科普是什么意思网络词 编辑:程序博客网 时间:2024/05/17 00:09
本文以sd插件为例说明异步任务的使用.
1.定义文件
sd.h修改class CSd增加成员:
string batch_op_task_name_; ///< 自动批操作任务名称.默认:batch_op.IAsyncTaskEngine *async_task_engine_; ///< 异步任务引擎IAsyncTask* batch_op_task_; ///< 自动批操作的异步任务
2.实现文件
sd.cpp修改////////////////////////////////////////////////////////////////////////////////int CSd::ReadPrivateConfig() { ... /// 读<batch_op_async_task_name>配置READ_STRING(root,"batch_op_async_task_name",this->batch_op_task_name_); ...}////////////////////////////////////////////////////////////////////////////////int CSd::CheckValid() { ... ///< 获取异步任务队列实例async_task_engine_ = reinterpret_cast<IAsyncTaskEngine*>(container_->GetResource(ASYNC_TASK_ENGINE));if (async_task_engine_==0) {nlogger_->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"需要加载异步任务队列.\n");return -1;}batch_op_task_ = async_task_engine_->Get(batch_op_task_name_.c_str());if (batch_op_task_==0) {nlogger_->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"自动批操作异步任务队列%s不存在,请检查配置.\n",batch_op_task_name_.c_str());return -1;} ... return 0;}
3.配置
3.1插件配置(sd.conf)
增加配置:<!-- 默认:batch_op --> <batch_op_async_task_name></batch_op_async_task_name>
自动批操作任务名称,需要和async_task.conf配置一致.
3.2 async_task.conf
<?xml version="1.0" encoding="gb2312" standalone="yes"?><config> <units> <unit> <!-- 自动批操作任务队列 --> <name>batch_op</name> <!-- 名称--> <dbc>yoopa</dbc> <!-- 数据库连接名.默认为插件默认数据库--> <table_name>t_Sys_AsyncTask_BatchOp</table_name> <!--异步任务队列表名称,默认:t_sys_asynctask --> <prop>0</prop> <!-- 任务属性 bit0-是否需要返回消息(0-不返回 1-返回 默认:1) 默认:1 --> <!--失败重做间隔,单位:秒,默认300--> <redo_interval>60</redo_interval> <!--失败重做任务扫描间隔,单位:秒,默认:60--> <redo_timer_interval>60</redo_timer_interval> <!--失败重做文件存储路径--> <!--limit:每目录最多文件个数--> <redo_file_path limit="1000">data/async_task/batch_op</redo_file_path> <!--最小重做文件字节数,默认:8k--> <redo_file_min_size>10240</redo_file_min_size> </unit> </units></config>
4.使用
写异步任务队列表的示例代码如下:AUTO_POINTER(CMsg,nmsg);nmsg = new CMsg;///... 构造消息包if (batch_op_task_->Save(nmsg)) { ///< 保存到异步任务队列表return -1;}
0 0
- 插件开发技术说明(18)---异步任务队列使用
- 插件开发技术说明(2)---rc_finder插件
- 插件开发技术说明(3)---letein插件
- Python异步任务队列
- celery 异步任务队列
- iOS开发中的并发、串行队列,同步、异步任务
- 插件开发技术说明(1)---前言
- 插件开发技术说明(4)---xml编程
- 插件开发技术说明(5)---分页处理
- 插件开发技术说明(11)---修改数据
- PHP使用swoole来实现实时异步任务队列
- 异步任务队列Celery在Django中的使用
- 插件开发技术说明(7)---读插件配置
- 异步任务执行之-队列
- Android 异步任务队列实现
- 插件开发技术说明(17)---应用CRUD开发模式范例
- 进程/多线程/同步任务/异步任务/串行队列/并行队列
- 串行队列/并发队列&异步任务/同步任务代码演练
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- 让TableView的header区头跟随tableView一起滑动
- 最近5年133个Java面试问题列表
- N只猴子选大王(用模拟过程的方法解决)
- SSH框架(四) Spring、Spring MVC、Struts2优缺点整理
- 插件开发技术说明(18)---异步任务队列使用
- 闲谈(一) Java 使用 Excle 和 CSV 文件
- 什么叫做裸设备
- 【小镇的技术天梯】Linux fstat函数
- WEB调试工具---Firebug
- A ndroid 获取屏幕高度、标题高度、状态栏高度详解
- iOS关于CAShapeLayer与UIBezierPath的知识内容
- MapReduce中的分区方法Partitioner
- 类View