- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java抢单功能_基于消息队列的⾼并发抢单功能实现⽅法与流
程
本发明涉及嵌⼊式软件中 件,具体涉及⼀种基于消息队列的⾼并发抢单功能实现⽅法。
背景技术:
中 件是⼀种独⽴的系统软件或服务程序,分布式应⽤系统借助这种软件在不同的技术之 共享资源,管理计算资源和⽹络通讯。它在计算
机系统中是⼀个关键软件,它能实现应⽤的互连和互操作性,能保证系统的安全、可靠、⾼效的运⾏。中 件位于⽤户应⽤和操作系统及⽹
络软件之 ,它为应⽤提供了公⽤的通信⼿段,并且独⽴于⽹络和操作系统。中 件为开发者提供了公⽤于所有环境的应⽤程序接⼝,当应
⽤程序中嵌⼊其函数调⽤,它便可利⽤其运⾏的特定操作系统和⽹络环境的功能,为应⽤执⾏通信功能。
RocketMQ是⼀款分布式、队列模型的消息中 件,具有以下特点:
(1)能够保证严格的消息顺序;
(2)提供丰富的消息拉取模式;
(3)⾼效的订阅者⽔平扩展能⼒;
(4)实时的消息订阅机制;
(5)亿级消息堆积能⼒;
MongoDB是⼀个基于分布式⽂件存储的数据库,由C++语⾔编写,旨在为WEB应⽤提供可扩展的⾼性能数据存储解决⽅案。具备⾼性
能、易部署、易使⽤等特点。
主要功能特性有:
(1)⾯向集合存储,易存储对象类型的数据;
(2)模式⾃由;
(3)⽀持动态查询;
(4)⽀持完全索引,包含内部对象;
(5)⽀持查询;
(6)⽀持复制和故障恢复;
(7)使⽤⾼效的⼆进制数据存储,包括⼤型对象(如视频等);
(8)⾃动处理碎⽚,以⽀持云计算层次的扩展性;
(9)⽀持RUBY,PYTHON,JAVA,C++,PHP等多种语⾔;
(10)⽂件存储格式为BSON(⼀种JSON的扩展);
(11)可通过⽹络访问;
如何有机结合消息队列中 件及⾼速内存数据库实现⾼并发抢单功能是嵌⼊式软件领域当前⼀项研究热点问题。
技术实现要素:
本发明所要解决的技术问题是:提出⼀种基于消息队列的⾼并发抢单功能实现⽅法,基于消息队列的特性,结合⾼速内存数据库实现⾼可
靠、⾼并发、易维护、分布式的抢单功能。
本发明解决其技术问题所采⽤的技术⽅案是:
作为⼀种实施例,本发明的基于消息队列的⾼并发抢单功能的实现⽅法,包括加⼊抢单⽅法,所述加⼊抢单⽅法包括:
为需要参加抢单的业务划分不同的类型,并设置对应的不同的优先级抢单队列;
将需要参加抢单的业务根据其类型加⼊对应的优先级抢单队列中;
如果加⼊成功,则保存⼊列记录,如果加⼊失败,则记录失败信息并保存到数据库。
作为进⼀步优化,所述抢单队列采⽤先进先出机制。
作为进⼀步优化,通过设置多个Topic来设置不同的优先级抢单队列。
作为进⼀步优化,所述抢单业务的类型包括:预处理抢单、要素纠偏抢单、全图纠偏抢单、规则检查抢单、模拟记账抢单、复核抢单。
作为进⼀步优化,所述保存⼊列记录的⽅式为:采⽤异步刷盘⽅式结合内存数据库,记录已加⼊队列的抢单业务,若发⽣程序中断、服务器
宕机事件,在重启应⽤后⾃动从内存数据库中读取未消费的信息,⾃动加⼊队列。
作为进⼀步优化,通过⼊列失败信息表来记录抢单业务加⼊失败信息,对于第⼀次写⼊失败信息表的抢单业务,通过定时程序在定时时 到
来时,再次将该抢单业务加⼊到队列中,若仍然加⼊失败,则通知⼈⼯⼲预。
作为另⼀种实施例,本发明的基于消息队列的⾼并发抢单功能的实现⽅法,包括撤销抢单⽅法,所述撤销抢单⽅法包括:
通过创建撤销记录表来记录需要撤销的业务单,在进⾏抢单处理时,从抢单队列中取出业务单,若该取出的业务单在撤销记录表中,则直接
丢弃该业务单,从⽽达到撤销该业务单的⽬的,若撤销业务单失败,则记录撤销业务单失败信息,并保存到数据库。
作为进⼀步优化,对于第⼀次保存的撤销业务单失败信息,通过定时程序在定时时 到来时,再次对业务单进⾏撤销,若仍然撤销业务单失
败,则通知⼈⼯⼲预。
作为第三种实施例,本发明的基于消息队列的⾼并发抢单功能的实现⽅法,包括抢单⽅法,所述抢单⽅法包括:
采⽤多消费端的并发抢单⽅式,从抢单列表中取出业务单后,及时更新消费进度,然后查询该业务单是否存在于撤销记录表中,若存在,则
直接丢弃该业务单,然后从抢单列表中取出下⼀个业务单;若不存在于撤销记录表中,则继续查询该业务单对应的消费记录,若已存在对应
的消费记录,则丢弃该业务单,若不存在对应的消费记录,则在对业务单进⾏处理后在消费记录表中保存对应的消费记录。
作为进⼀步优化,该⽅法还包括:在对业务单进⾏处理时,若出现抢单异常状况,则通过抢单异常信息表记录这⼀状况,通过定时程序在定
时时 到来时,再次对该业务单进⾏处理,若仍
文档评论(0)