本發(fā)明實(shí)施例涉及計(jì)算機(jī),尤其涉及一種消息分發(fā)方法、裝置、終端設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、倉儲管理系統(tǒng)(warehouse?management?system,wms)通過向相關(guān)設(shè)備分發(fā)任務(wù)消息,來控制設(shè)備執(zhí)行物品入庫、分揀、出庫等任務(wù)。現(xiàn)有技術(shù)中,常基于定時觸發(fā)機(jī)制對任務(wù)數(shù)據(jù)庫進(jìn)行掃描、聚合等操作,以匹配同類任務(wù)消息進(jìn)行分發(fā)。
2、在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在以下技術(shù)問題:
3、由于頻繁操作任務(wù)數(shù)據(jù)庫會造成較大的數(shù)據(jù)庫壓力,定時觸發(fā)的間隔往往不能過短,消息分發(fā)實(shí)時性較差,從而無法滿足對實(shí)時性要求較高的任務(wù)作業(yè);在設(shè)備異常、網(wǎng)絡(luò)不通、海量訂單下發(fā)等導(dǎo)致大量任務(wù)待處理的場景下,由于數(shù)據(jù)庫操作性能受限、且擴(kuò)展困難,容易出現(xiàn)任務(wù)查詢超時、大量任務(wù)消息無法分發(fā)的情況,從而影響任務(wù)作業(yè);另外,由于數(shù)據(jù)庫內(nèi)任務(wù)數(shù)量較大,現(xiàn)有定時觸發(fā)機(jī)制僅支持以類別為單位的定時配置,無法滿足單個任務(wù)的個性化執(zhí)行時間戳配置,單個任務(wù)執(zhí)行時間精度無法保證。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例提供一種消息分發(fā)方法、裝置、終端設(shè)備及存儲介質(zhì),不僅能夠滿足消息分發(fā)的實(shí)時性,還能動態(tài)擴(kuò)展以應(yīng)對大量任務(wù)消息分發(fā),且可支持單個任務(wù)執(zhí)行時間戳的配置,提高任務(wù)執(zhí)行時間精度。
2、第一方面,本發(fā)明實(shí)施例提供了一種消息分發(fā)方法,包括:
3、每隔第一預(yù)設(shè)時間,從任務(wù)數(shù)據(jù)庫中確定執(zhí)行時間戳與當(dāng)前時間戳的差值小于等于所述第一預(yù)設(shè)時間的各待執(zhí)行任務(wù);
4、將所述各待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列;其中,每個所述預(yù)設(shè)隊(duì)列具有對應(yīng)的任務(wù)分發(fā)線程;
5、基于各所述任務(wù)分發(fā)線程,循環(huán)獲取對應(yīng)預(yù)設(shè)隊(duì)列中執(zhí)行時間戳小于等于當(dāng)前時間戳的目標(biāo)任務(wù);
6、對所述目標(biāo)任務(wù)對應(yīng)的任務(wù)消息進(jìn)行分發(fā)。
7、第二方面,本發(fā)明實(shí)施例提供了一種消息分發(fā)裝置,包括:
8、待執(zhí)行任務(wù)確定模塊,用于每隔第一預(yù)設(shè)時間,從任務(wù)數(shù)據(jù)庫中確定執(zhí)行時間戳與當(dāng)前時間戳的差值小于等于所述第一預(yù)設(shè)時間的各待執(zhí)行任務(wù);
9、待執(zhí)行任務(wù)存儲模塊,用于將所述各待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列;其中,每個所述預(yù)設(shè)隊(duì)列具有對應(yīng)的任務(wù)分發(fā)線程;
10、目標(biāo)任務(wù)獲取模塊,用于基于各所述任務(wù)分發(fā)線程,循環(huán)獲取對應(yīng)預(yù)設(shè)隊(duì)列中執(zhí)行時間戳小于等于當(dāng)前時間戳的目標(biāo)任務(wù);
11、任務(wù)消息分發(fā)模塊,用于對所述目標(biāo)任務(wù)對應(yīng)的任務(wù)消息進(jìn)行分發(fā)。
12、第三方面,本發(fā)明實(shí)施例提供了一種終端設(shè)備,包括:
13、一個或多個處理器;
14、存儲器,用于存儲一個或多個程序;
15、當(dāng)所述一個或多個程序被所述一個或多個處理器執(zhí)行,使得所述一個或多個處理器實(shí)現(xiàn)如本發(fā)明任意實(shí)施例所述的消息分發(fā)方法。
16、第四方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時實(shí)現(xiàn)如本發(fā)明任意實(shí)施例所述的消息分發(fā)方法。
17、本發(fā)明實(shí)施例提供的一種消息分發(fā)方法、裝置、終端設(shè)備及存儲介質(zhì),每隔第一預(yù)設(shè)時間,從任務(wù)數(shù)據(jù)庫中確定執(zhí)行時間戳與當(dāng)前時間戳的差值小于等于第一預(yù)設(shè)時間的各待執(zhí)行任務(wù);將各待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列;其中,每個預(yù)設(shè)隊(duì)列具有對應(yīng)的任務(wù)分發(fā)線程;基于各任務(wù)分發(fā)線程,循環(huán)獲取對應(yīng)預(yù)設(shè)隊(duì)列中執(zhí)行時間戳小于等于當(dāng)前時間戳的目標(biāo)任務(wù);對目標(biāo)任務(wù)對應(yīng)的任務(wù)消息進(jìn)行分發(fā)。
18、通過將任務(wù)數(shù)據(jù)庫中從當(dāng)前時刻起第一預(yù)設(shè)時間內(nèi)需要執(zhí)行的待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列,能夠基于各預(yù)設(shè)隊(duì)列對應(yīng)的任務(wù)分發(fā)線程,實(shí)現(xiàn)間隔較短地循環(huán)獲取需立即執(zhí)行的目標(biāo)任務(wù),從而可滿足消息分發(fā)實(shí)時性。并且,預(yù)設(shè)隊(duì)列和任務(wù)分發(fā)線程相較于傳統(tǒng)數(shù)據(jù)庫來講,更容易動態(tài)擴(kuò)展,從而有利于應(yīng)對大量任務(wù)消息分發(fā)。另外,本發(fā)明實(shí)施例提供的方法,可支持每個任務(wù)的執(zhí)行時間戳的個性化設(shè)置,從而可提高執(zhí)行時間精度。
1.一種消息分發(fā)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述各待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述各待執(zhí)行任務(wù)的執(zhí)行時間戳,將所述各待執(zhí)行任務(wù)存入各預(yù)設(shè)隊(duì)列,包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述各預(yù)設(shè)隊(duì)列包括有序集合;其中,所述各預(yù)設(shè)隊(duì)列中的所述各待執(zhí)行任務(wù)根據(jù)對應(yīng)的執(zhí)行時間戳的時序進(jìn)行存儲。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述對所述目標(biāo)任務(wù)對應(yīng)的任務(wù)消息進(jìn)行分發(fā)之后,還包括:
6.根據(jù)權(quán)利要求1-5中任一所述的方法,其特征在于,所述各預(yù)設(shè)隊(duì)列的隊(duì)列數(shù)量根據(jù)所述任務(wù)數(shù)據(jù)庫中的任務(wù)數(shù)量進(jìn)行設(shè)置。
7.根據(jù)權(quán)利要求1-5中任一所述的方法,其特征在于,應(yīng)用于倉儲管理系統(tǒng),所述任務(wù)消息包括下述至少一種:訂單取消消息和訂單攔截消息。
8.一種消息分發(fā)裝置,其特征在于,包括:
9.一種終端設(shè)備,其特征在于,所述終端包括:
10.一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時實(shí)現(xiàn)如權(quán)利要求1-7中任一所述的消息分發(fā)方法。