消息隊列技術(shù)在短信通信中的應(yīng)用_第1頁
消息隊列技術(shù)在短信通信中的應(yīng)用_第2頁
消息隊列技術(shù)在短信通信中的應(yīng)用_第3頁
消息隊列技術(shù)在短信通信中的應(yīng)用_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 消息隊列技術(shù)在短信通信中的應(yīng)用 1 概述短消息服務(wù)以簡單方便的使用功能受到大眾的歡迎,除了大量使用的手機用戶到手機用戶的短信業(yè)務(wù)之外,從信息平臺到手機用戶的短消息服務(wù)也在快速發(fā)展,該類業(yè)務(wù)已成為廣大用戶獲取信息的一種重要手段。由于歷史原因,舊版的農(nóng)信通業(yè)務(wù)在短信發(fā)送和接收過程中,采用了同步通信機制。當消息發(fā)送時,需要等待接收方響應(yīng),此時發(fā)送進程被阻塞。如果接收方響應(yīng)不及時,勢必會影響發(fā)送方的發(fā)送速度。在通信量較小的情況,此種通信機制完全能滿足業(yè)務(wù)的需求。然而,當通信量達到每天幾百萬需求時,這樣的通信機制顯得捉襟見肘了,出現(xiàn)信息送達延時、信息積壓、記錄鎖等問題,嚴重影響到業(yè)務(wù)的發(fā)展。通過筆者對

2、消息隊列的研究和學(xué)習(xí),在農(nóng)信通系統(tǒng)中引入了消息隊列技術(shù)。實現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的消息放入一個容器中,然后把它保存在系統(tǒng)公用空間的消息隊列中,本地或者是異地消息接收程序再從該消息隊列中取出它的消息進行處理。2 技術(shù)方案2.1 消息隊列模塊依照中國移動點對點cmpp3.0協(xié)議,結(jié)合短信業(yè)務(wù)的個性化需求,設(shè)計了四個消息隊列,分別是:發(fā)送消息隊列:保存由數(shù)據(jù)操作模塊提供的數(shù)據(jù),供短信發(fā)送模塊使用。response消息隊列:當短信發(fā)送模塊將信息發(fā)送得到響應(yīng)后,將該消息放入發(fā)送日志隊列中,由數(shù)據(jù)操作模塊處理。狀態(tài)報告隊列:當接收到用戶狀態(tài)報告時,將此狀態(tài)報告放入狀態(tài)報告隊列中,由數(shù)據(jù)操作模

3、塊處理。mo消息隊列:當接收到用戶上行到短信網(wǎng)關(guān)的業(yè)務(wù)指令時,將業(yè)務(wù)指令信息放入mo隊列,由數(shù)據(jù)操作模塊處理。2.2 數(shù)據(jù)操作模塊在本實施方案中,此模塊主要進行兩部分操作:2.2.1 從數(shù)據(jù)庫中讀取數(shù)據(jù)負責(zé)從數(shù)據(jù)庫中批量讀取系統(tǒng)中待發(fā)送的消息數(shù)據(jù),放入待發(fā)送消息隊列中,數(shù)據(jù)取出的同時從數(shù)據(jù)庫中刪除已取出的數(shù)據(jù),避免重復(fù)讀取。讀取數(shù)據(jù)采用實時或是間隔某個微小時間,判斷發(fā)送消息隊列中的消息量,當發(fā)送消息隊列中消息量小于某個閥值時,主線程觸發(fā)讀取數(shù)據(jù)操作。2.2.2 從response消息隊列、狀態(tài)報告消息隊列、mo消息隊列取數(shù)據(jù)寫入數(shù)據(jù)庫采用多線程方式,處理response消息隊列、狀態(tài)報告消息隊

4、列、mo消息隊列中的數(shù)據(jù)。消息隊列中的數(shù)據(jù)根據(jù)其性質(zhì)可以設(shè)置不同的優(yōu)先級,為了保證用戶上行指令的及時性,mo消息隊列的優(yōu)先級高于response隊列和狀態(tài)報告消息隊列。response消息隊列:從短信網(wǎng)關(guān)接收到的響應(yīng)包,當response為0時,表示短信網(wǎng)關(guān)正確接收消息,記錄消息的發(fā)送日志。當response非0,表示短信網(wǎng)關(guān)接收數(shù)據(jù)失敗,一般這樣的情況給予3次發(fā)送機會,如果發(fā)送次數(shù)小于閥值,則該條消息的發(fā)送次數(shù)加1后重新寫入數(shù)據(jù)庫的待發(fā)送隊列中。2.3 短信發(fā)送模塊短信發(fā)送模塊主要作用是將待發(fā)送隊列中的信息發(fā)送到短信網(wǎng)關(guān),并接收網(wǎng)關(guān)返回的響應(yīng)信息、狀態(tài)報告以及mo信息,原理如下:創(chuàng)建多個發(fā)送

5、線程,每一個線程創(chuàng)建一個與短信網(wǎng)關(guān)通信的socket連接,同時創(chuàng)建相應(yīng)的多個接收線程和多個滑動窗口監(jiān)控線程。每個發(fā)送線程首先判斷滑動窗口容器中數(shù)據(jù)量,當數(shù)據(jù)量小于滑動窗口閥值時,從發(fā)送消息隊列中取得待發(fā)送數(shù)據(jù)向短信網(wǎng)關(guān)發(fā)送,發(fā)送成功后將該信息置入滑動窗口容器中,并將全局計數(shù)器加1,否則該線程進行短暫的休息。接收線程實時接收短信網(wǎng)關(guān)傳送過來的數(shù)據(jù),接收線程接收到數(shù)據(jù)后,如果是response響應(yīng),則根據(jù)消息內(nèi)容與滑動窗口容器中數(shù)據(jù)進行匹配,如果匹配到,則將滑動窗口容器中該數(shù)據(jù)刪除,放入response消息隊列,由數(shù)據(jù)處理模塊進行處理。如果匹配失敗則拋棄該數(shù)據(jù);接收線程接收到狀態(tài)報告,將信息存入狀

6、態(tài)報告消息隊列中;接收線程接收到用戶mo信息,將該信息存入mo消息隊列中。response消息隊列、狀態(tài)報告消息隊列、mo消息隊列由數(shù)據(jù)操作模塊進行處理?;瑒哟翱谌萜鞅O(jiān)控線程間隔性檢測該容器中數(shù)據(jù)是否超時,如果超時,則該數(shù)據(jù)刪除并放入發(fā)送日志隊列同時為該數(shù)據(jù)置超時標志。3 實施效果與優(yōu)勢通過引入消息隊列技術(shù),在短信業(yè)務(wù)的數(shù)據(jù)通信中,每個連接的發(fā)送速度達到每秒60條左右。如果短信網(wǎng)關(guān)給一個短信類業(yè)務(wù)分配4個連接通道,那么業(yè)務(wù)的發(fā)送速度將達到每秒240條。完全能滿足日發(fā)送600萬(8*3600*240,一天按8小時計算)的業(yè)務(wù)量需求。消息隊列技術(shù)不僅能提高通信速度,還具備以下優(yōu)勢:msmq是一種分布式的開放技術(shù),可以在服務(wù)端離線情況下工作,將消息臨時保存在發(fā)送方的消息隊列中,以后聯(lián)機時再發(fā)送到接收方處理,避免了由于通信中斷導(dǎo)致數(shù)據(jù)丟失現(xiàn)象,提高了通信的可靠性。由于是異步通信機制,無論是發(fā)送方還是接收方,都不用等待對方返回成功消息,就可以執(zhí)行余下的代碼,大大提高了事

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論