[发明专利]一种基于多线程的消息处理方法及装置有效
申请号: | 201710112550.6 | 申请日: | 2017-02-28 |
公开(公告)号: | CN108509257B | 公开(公告)日: | 2022-07-22 |
发明(设计)人: | 沈林杰;闫猛;范浩雍;李安平 | 申请(专利权)人: | 苏宁易购集团股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/54;G06Q10/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多线程 消息 处理 方法 装置 | ||
1.一种基于多线程的消息处理方法,其特征在于,包括:
接收嵌入式系统发送的消息,根据对所述消息的解析结果,生成报文,其中,所生成的报文对应待处理事务,所述待处理事务包括了至少一个步骤;
将所生成的报文加入线程安全队列,其中,所述线程安全队列包括指定大小的数据公共访问区,用于各线程访问所述线程安全队列中的数据;
从所述线程安全队列中提取报文,并加入当前空闲的线程进行处理,其中,一个线程用于处理所述待处理事务所包括的一个步骤;
将所得到的处理结果向所述嵌入式系统发送;
线程的数量为所述待处理事务的步骤数量的整数倍,一个步骤由至少一个线程处理;
还包括:针对每一条接收到的消息生成报文,若线程处理其中一个步骤时需要读取另一个步骤的处理结果,则从所述线程安全队列中查询是否存在所述另一个步骤的处理结果;若是则从所述线程安全队列中读取所述另一个步骤的处理结果;
若当前在所述线程安全队列中无法读取所述另一个步骤的处理结果,则处理所述其中一个步骤的线程挂起,直至从所述线程安全队列中成功读取所述另一个步骤的处理结果;每个工作线程间不进行数据交互和内部通讯,所有的数据交互都通过线程安全队列中的数据实现;
其中,订单作为一个事务,消息进入wcs系统后,系统为拣选、打包、分拣线程各自添加了一个线程作业;
还包括:
接收所述嵌入式系统并发发送的至少2条消息;
针对每一条接收到的消息生成报文,并将对应所生成报文的步骤,分别加入各个线程的处理队列;
还包括:
针对每一条接收到的消息生成报文,一个步骤被线程处理完毕后,将这一个步骤的处理结果存入所述线程安全队列。
2.一种基于多线程的消息处理装置,其特征在于,包括:
接收模块,用于接收嵌入式系统发送的消息,根据对所述消息的解析结果,生成报文,其中,所生成的报文对应待处理事务,所述待处理事务包括了至少一个步骤;
队列模块,用于将所生成的报文加入线程安全队列,其中,所述线程安全队列包括指定大小的数据公共访问区,用于各线程访问所述线程安全队列中的数据;
处理模块,用于从所述线程安全队列中提取报文,并加入当前空闲的线程进行处理,其中,一个线程用于处理所述待处理事务所包括的一个步骤;
发送模块,用于将所得到的处理结果向所述嵌入式系统发送;
线程的数量为所述待处理事务的步骤数量的整数倍,一个步骤由至少一个线程处理;
所述处理模块,还用于针对每一条接收到的消息生成报文,若线程处理其中一个步骤时需要读取另一个步骤的处理结果,则通过所述队列模块从所述线程安全队列中查询是否存在所述另一个步骤的处理结果;若是则从所述线程安全队列中读取所述另一个步骤的处理结果;若当前在所述线程安全队列中无法读取所述另一个步骤的处理结果,则处理所述其中一个步骤的线程挂起,直至从所述线程安全队列中成功读取所述另一个步骤的处理结果;
每个工作线程间不进行数据交互和内部通讯,所有的数据交互都通过线程安全队列中的数据实现;
其中,订单作为一个事务,消息进入wcs系统后,系统为拣选、打包、分拣线程各自添加了一个线程作业;
所述接收模块,具体用于接收所述嵌入式系统并发发送的至少2条消息;
所述处理模块,具体用于针对每一条接收到的消息生成报文,并将对应所生成报文的步骤,分别加入各个线程的处理队列;
其中,线程的数量为所述待处理事务的步骤数量的整数倍,一个步骤由至少一个线程处理;
所述处理模块,还用于针对每一条接收到的消息生成报文,一个步骤被线程处理完毕后,将这一个步骤的处理结果存入所述线程安全队列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏宁易购集团股份有限公司,未经苏宁易购集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710112550.6/1.html,转载请声明来源钻瓜专利网。