插件开发技术说明(18)---异步任务队列使用

本文以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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值