-
任务队列-单线程消费作者 : 管理员 发布于 2023-04-25 23:51:52 浏览 594 次任务队列就是把数据消息放入队列,一个一个的去消费处理。
任务队列就是把数据消息放入队列,一个一个的去消费处理。
先看实例,新建一个任务队列类继承于XiaoFeng.Threading.TaskServiceQueue如下类
T可以是任何数据类型,比如Task,Object,List,IEnumerable,Func/// <summary> /// 我的任务队列 /// </summary> public class MyTaskQueue : XiaoFeng.Threading.TaskServiceQueue<string> { #region 构造器 /// <summary> /// 无参构造器 /// </summary> public MyTaskQueue() { } #endregion #region 属性 /// <summary> /// 单例模式,全局使用 /// </summary> private static MyTaskQueue _TaskQueue; /// <summary> /// 单例模式,全局使用 /// </summary> public static MyTaskQueue TaskQueue { get { if (_TaskQueue == null) { _TaskQueue = new MyTaskQueue(); _TaskQueue.TaskQueueOk += task => { //TODO:任务成功事件 }; _TaskQueue.TaskQueueError += (task, e) => { //TODO:任务失败事件 }; } return _TaskQueue; } } #endregion #region 方法 /// <summary> /// 处理队列任务数据 /// </summary> /// <param name="workItem">数据</param> /// <param name="cancellationToken">取消令牌</param> /// <returns></returns> public override Task ExecuteAsync(string workItem, CancellationToken cancellationToken) { return Task.Run(() => { //如果是空则直接返回 不处理 if (workItem.IsNullOrEmpty()) return; //如果是存数字然后操作 if (workItem.IsMatch(@"^\d+$")) { //TODO:操作数据,是进数据库,还是调其它方法,或送到其它平台。 } }); } #endregion }
下边说一下怎么使用当前类
//添加任务 MyTaskQueue.TaskQueue.AddWorkItem("aaa123");
你的工作就是,添加入队,出队数据是怎么处理即可,其它交给TaskServiceQueue处理。
所有评论(0)