信息對應(yīng)的各個推送時間點后,將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲,所述將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲的方式為:先建立所述待推送消息與生成的各個待推送消息的關(guān)聯(lián)關(guān)系,然后根據(jù)建立的所述關(guān)聯(lián)關(guān)系將所述待推送消息與生成的各個推送時間點存儲到預(yù)設(shè)的存儲空間,所述存儲空間包括MongoDB(分布式文檔存儲數(shù)據(jù)庫)、緩存或閃存等等,也就是說,在所述存儲空間中,所述待推送消息對應(yīng)著各個推送時間點,相當(dāng)于是存儲待推送消息時,記錄所述待推送消息的標(biāo)識信息,然后將生成的各個推送時間點存儲到所述存儲空間時,對各個推送時間點也記錄所述待推送消息的標(biāo)識信息,以建立所述待推送消息與生成的各個待推送消息的關(guān)聯(lián)關(guān)系?;蛘呤牵鎯Υ扑拖r,在所述待推送消息中設(shè)置一個標(biāo)志位如標(biāo)志位1,在存儲生成的各個推送時間點時,對各個推送時間點也設(shè)置所述標(biāo)志位1,以建立所述待推送消息與生成的各個待推送消息的關(guān)聯(lián)關(guān)系。本實施例中,通過預(yù)存一個待推送消息以及各個推送時間點,可以減小存儲空間中的存儲容量,從而提高了服務(wù)器的運行效率。
[0089]可以理解的是,將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲時,也可先確定生成的各個推送時間點對應(yīng)的個數(shù),根據(jù)確定的個數(shù)相應(yīng)生成所述個數(shù)對應(yīng)的各個待推送消息,并將生成的各個待推送消息與各個推送時間點關(guān)聯(lián)存儲,即每個待推送消息對應(yīng)一個推送時間點,此時,存儲的各個待推送消息中,只是推送時間點不同,其它內(nèi)容都是都相同。
[0090]步驟S30,按照推送時間點的先后順序依次推送所述待推送消息。
[0091 ]在本實施例中,所述步驟S30的實施方式包括:
[0092]1)方式一、將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲后,按照各個推送時間點的先后順序排列各個推送時間點,并在第一個推送時間點與當(dāng)前時間點匹配時,將所述待推送消息推送給終端。
[0093]2)方式二、將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲后,在所述各個推送時間點中有推送時間點與當(dāng)前時間點匹配時,將所述待推送消息推送給終端。
[0094]3)方式二、將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲后,按照各個推送時間點的先后順序?qū)⑺龃扑拖⒁来未嫒腩A(yù)設(shè)的消息列隊中,并在所述消息列隊中的第一個待推送消息的推送時間點與當(dāng)前時間點匹配時,將所述第一個待推送消息推送至終端中。
[0095]4)方式四、為了提高消息推送的靈活性,所述步驟S30包括:
[0096]步驟A,所述服務(wù)器獲取各個推送時間點中距離當(dāng)前時間點的時間間隔小于第一預(yù)設(shè)時間間隔的各個推送時間點;
[0097]步驟B,按照獲取的各個推送時間點的先后順序?qū)⑺龃扑拖⒁来未嫒胂⒘嘘犞校?br>[0098]步驟C,在所述消息列隊中的待推送消息的推送時間點距離當(dāng)前時間點的時間間隔小于第二預(yù)設(shè)時間間隔時,將所述消息列隊中的所述待推送消息推送至終端中。
[0099]在本實施例中,所述服務(wù)器獲取各個推送時間點中距離當(dāng)前時間點的時間間隔小于第一預(yù)設(shè)時間間隔的各個推送時間點,然后按照獲取的各個推送時間點的先后順序?qū)⑺龃扑拖⒁来未嫒胂⒘嘘犞?,即按照獲取的各個推送時間點獲取相應(yīng)次數(shù)的待推送消息,并將獲取的待推送消息依次存入消息列隊中。相當(dāng)于所述服務(wù)器每隔第一預(yù)設(shè)時間間隔調(diào)用一次生產(chǎn)線程,如所述服務(wù)器每隔5秒啟動一次生產(chǎn)線程,并通過所述生產(chǎn)線程獲取未來5秒需要推送的待推送消息,然后將獲取的各個待推送消息按照推送時間點的先后順序依次存入消息列隊中。本實施例通過設(shè)置第一預(yù)設(shè)時間間隔,使得服務(wù)器每次只要獲取存儲的各個待推送消息中推送時間點距離當(dāng)前時間點的時間間隔小于第一預(yù)設(shè)時間間隔的各個待推送消息即可,而不需要獲取全部的待推送消息,實現(xiàn)了對即將推送的消息才放入消息列隊中,而不需要放入全部的待推送消息,減小了消息列隊的負(fù)擔(dān),提高了消息推送的效率。而在所述消息列隊中的待推送消息的推送時間點距離當(dāng)前時間點的時間間隔小于第二預(yù)設(shè)時間間隔時,所述服務(wù)器將所述消息列隊中的所述待推送消息推送至終端中。相當(dāng)于所述服務(wù)器每隔第二預(yù)設(shè)時間間隔調(diào)用一次任務(wù)線程,如所述服務(wù)器每隔2秒啟動一次任務(wù)線程,并通過所述任務(wù)線程將所述消息隊列中未來2秒需要發(fā)送的所述待推送消息推送到終端中。本實施例通過設(shè)置第二預(yù)設(shè)時間間隔,使得所述消息列隊的所述待推送消息的推送時間點距離當(dāng)前時間點的時間間隔小于第二預(yù)設(shè)時間間隔時,才將所述消息列隊中的所述待推送消息推送至終端中,特別是當(dāng)消息列隊中存儲的待推送消息包括多個,且各個待推送消息的推送時間點僅相差幾秒時,通過事先設(shè)置第二預(yù)設(shè)時間間隔,提前對待推送的消息進(jìn)行排序并發(fā)送,不會造成推送時間點到達(dá),由于待推送的消息過多,而導(dǎo)致消息推送延遲的情況,本實施例提高了消息推送的效率。
[0100]本實施例提出的消息推送方法,先通過待推送消息對應(yīng)的起始推送時間以及推送周期,生成所述待推送信息對應(yīng)的各個推送時間點,然后將所述待推送消息與生成的各個推送時間點關(guān)聯(lián)存儲,最后按照推送時間點的先后順序依次推送所述待推送消息,而不是當(dāng)待推送消息在同一天需要推送多次時,需要人為配置多個推送時間點,本發(fā)明只要獲取待推送消息的起始推送時間點以及推送周期,即可獲得對應(yīng)的各個推送時間點,然后按照推送時間點的先后順序依次推送所述待推送消息,從而提高了消息推送的靈活性。
[0101]進(jìn)一步地,為了提高消息推送的靈活性,參照圖7,基于第一實施例提出本發(fā)明消息推送方法的第二實施例,在本實施例中,所述步驟S30之后,所述消息推送方法包括:
[0102]步驟S40,若所述消息列隊中的所述待推送消息推送失敗,則所述服務(wù)器對推送失敗的所述待推送消息增加預(yù)設(shè)時間段以更新所述推送失敗的所述待推送消息的推送時間占.
[0103]步驟S50,根據(jù)更新后的所述推送時間點將所述推送失敗的所述待推送消息插入所述消息列隊中。
[0104]在本實施例中,若所述消息列隊中的所述待推送消息推送失敗,則所述服務(wù)器對所述推送失敗的所述待推送消息增加預(yù)設(shè)時間段以更新所述推送失敗的所述待推送消息的推送時間點,即在所述推送失敗的所述待推送消息對應(yīng)的推送時間點中增加預(yù)設(shè)的時間段,使得所述推送失敗的所述待推送消息對應(yīng)的推送時間點延后了,然后所述服務(wù)器根據(jù)更新后的所述推送時間點將所述推送失敗的所述待推送消息插入所述消息列隊中,即所述服務(wù)器將更新了推送時間點的所述待推送消息插入所述消息列隊中,在本實施例中,為了提高消息推送的智能性,所述服務(wù)器將更新后的推送時間點與消息列隊中的其它各個待推送消息對應(yīng)的推送時間點進(jìn)行比對,以確定更新了推送時間點的所述待推送消息與其它各個待推送消息的推送時間點的先后順序,并按照推送時間點的先后順序重新排列更新了推送時間點的所述待推送消息和其它各個待推送消息,使得推送時間點靠前的待推送消息排在前面,推送時間點靠后的待推送消息排在后面。例如,消息列隊中有4個待推送消息,4個推送時間點分別為8:00am、8:05am、8:10am和8:15am,在第一待推送消息推送失敗時,將所述第一待推送消息的推送時間點增加預(yù)設(shè)的時間間隔如6min,即可知道所述第一待推送消息更新后的推送時間點為8:06am,因此,將更新后的第一待推送消息插入所述消息列隊時,是插入到8:05am和8:10am之間,使得所述消息列隊中的各個待推送消息的排列順序為8:05am、8:06am、8:10am和8:15am0
[0105]本實施例將推送失敗的消息重新存入消息列隊中,使得推送失敗的消息再次進(jìn)行推送,避免了由于網(wǎng)速中斷、或者是服務(wù)器出現(xiàn)暫時性故障時,而導(dǎo)致的消息推送失敗,本實施例提高了消息推送的靈活性。
[0106]進(jìn)一步地,為了提高消息推送的智能性,參照圖8,基于第二實施例提出本發(fā)明消息推送方