【文章摘要】
針對RPC中間件技術面對規模和復雜度相對較高的分布式系統時,在同步通信、客戶和服務對象的生命周期緊密耦合、點對點通信上所顯示出的局限性,提出了一種異步手機短信和郵件發送消息中心平臺(MCP)解決方案。發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發給接收者。
【關鍵詞】
MCP;SMS;ActiveMQ
0 引言
隨著網絡的發展,系統的分布更加的復雜,系統和系統之前的異步通信是一個急需解決的問題;現在幾乎每一個人都有一部電話,每天都接觸電腦接觸網絡,為了拋棄以前的紙上、當面的辦公模式,系統和人手中的電話、系統和每個人的各種通信工具的異步通信成為問題的關鍵。為滿足在分布式環境下企業應用對性能、安全性、穩定性等方面的要求,可以構建基于消息的中間件的數據通信系統。它能夠異步傳遞消息將彼此獨立的計算機連接起來組成松耦合的系統,并且可以有效地屏蔽細節對外提供統一的服務。這樣不但可以節約交通工具的成本,還可以提高辦公的效率。
1 異步手機短信和郵件發送消息中心平臺構建
消息中心平臺是用于軟件系統內部和外部消息傳遞的中間件服務,提供消息的發送,接收,重復消息的壓縮,重要消息的升級,短信消息(SMS),郵件消息(Email),離線消息,消息群發,消息轉發,平臺獨立運行。
1.1 消息平臺需求分析
收發短信:通過短信網關和短信貓完成短消息的收發和消息格式的轉換,便于同第三方系統的交互。
收發郵件:通過收發郵件的功能,提供客戶以郵件的方式與第三方系統進行交互。
JMS消息交互:第三方系統通過消息中心API來實現短信和郵件的發送和接收。
消息驗證:對于客戶端發來的信息,首先進行驗證,如果符合條件則進行發送。不符合條件持久化后丟棄。確保消息的完整性,屏蔽垃圾信息。
自動從連:由于客戶端、服務器或者網絡原因造成客戶端到服務器的連接中斷,待可正常連接時,客戶端可自動從新連接到服務器,增強程序的健壯性。
自動從發:當短信或者郵件消息發送失敗后,時隔一定時長后可自動從新發送,確保在可控制范圍內的消息不丟失行。
清空消息隊列:對于發送隊列中的消息,由于客戶的需要可對其清空不發送。
日志處理:用戶可以查詢消息發送和接收日志,手動清除消息日志;程序可自動定期備份消息日志。
程序監控:用戶可以監控部署MCP的服務器的CPU、內存的占用情況,保證消息服務器健康運行;監控消息的收發成功和失敗的數量,得到MCP消息的丟失率。
1.2 消息平臺總體設計
本系統為純后臺程序,第三方系統通過客戶端連接到服務器端進行發送消息。采用支持JMS1.1規范的ActiveMQ進行消息的接收和發送。ActiveMQ設置兩個通道,一個用來接收消息的接收通道,一個用來發送消息的發送通道。第三方系統通過集成客戶端發送消息到ActiveMQ。MCP自身有一個消費者,此消費者監聽接收通道,監聽到消息,先判斷類型然后通過IPX/短信網關接口、郵件接口把消息發送出去,當IPX/短信網關接口或者郵件接口接收到消息則通過一個消息創建者把消息發送到消息發送通道上,集成客戶端的第三方系統監聽消息發送通道就可以接收到MCP的消息了。
1.3 系統功能模塊劃分
消息管理:負責消息的發送,接收,壓縮,升級,轉換,持久化,日志記錄。
性能監控:負責消息中心的監控,包括:CPU、內存利用率,消息隊列的狀態,還可以控制連接的啟動和停止,消息的測試,消息通道的建立和刪除功能。
日志管理:記錄消息日志,錯誤消息日志,并且能核查消息錯誤原因。
客戶端管理:負責連接消息中心,注冊客戶端,注銷客戶端,斷開連接,發送消息,接收消息,心跳監聽。
1.4 消息平臺接口設計
1.4.1用戶接口
(1)集成系統:導入消息中心平臺的JAR包,實現提供給客戶端的接口。
(2)維護人員:通過JDK自帶的監控功能,即可進行消息中心的監控和維護。
(3)客戶端:是第三方系統與消息中心服務器溝通的橋梁,只有把消息中心客戶端集成到第三方系統中,第三方系統才可以與消息中心服務器發送和接收消息。
1.4.2外部接口
短信網關接口:IPX短信網關使用的是WebSerivce接口。
短信Modem接口:金笛短信Modem串行接口。
郵件接口:Gmail的郵件接口,發送郵件協議為SMTP,接收郵件的協議為IMAP協議。
1.5 消息平臺運行設計
1.5.1運行模塊組合
系統的每個模塊都依賴于消息中心模塊,每個模塊獨立的,沒有依賴關系。
1.5.2運行控制
(1)首先啟動消息中心平臺,建立消息通道,監聽連接,監聽消息;連接短信網關和短信Model,監聽短信;連接郵件服務器,監聽郵件;
(2)第三方系統連接消息中心平臺,監聽信息。
(3)短信貓、短信網關和郵件如果連接失敗,通過定時器定時重連。
1.5.3運行時間
一般用戶的操作響應時間應在2秒鐘左右,測試、文檔備份、數據的導入和導出操作的時間會相對較長一些,但是操作也在可接受的時間內完成。
1.6 消息平臺數據庫設計
對于發送到消息中心平臺的所有消息都需要進行入庫操作。用于日后的日志查詢。基本信息表記錄消息的共同屬性,其中包括消息的主題、消息的目的地址(消息的接收人)、消息的發送人、消息的類型、消息的優先級、消息的發送時間、消息的接收時間、消息是否發送成功、消息發送的次數等。通過這些信息,可以統計出消息發送成功和失敗的數量,同時也可以查看出每條消息的詳細信息。
消息其他信息的存儲:由于消息包括郵件、短信消息。因此,對于短信和郵件分別有一張表,存儲自己特有的字段。
客戶端注冊信息的存儲:客戶端有管理功能,對于客戶端的一些信息需要進行入庫操作。啟動一個ActiveMQ服務器以后會有一個broker,通過創建ConnectFactory進行對消息進行處理。為了起到安全作用,在服務器端設置連接ConnectFactory的賬號和密碼。因此,當客戶端在創建ConnectFactory時候,就會通過帳號密碼進行驗證,如果通過則可以與服務器端進行連接,反之不可。此外,對客戶端的一些其他信息進行了保存,以便對客戶端的統計和查詢功能的實現。
消息平臺服務器的基本配置:對于消息平臺服務器端的一些配置進行了數據庫的存儲。主要是針對消息平臺處理的消息的長度、消息隊列的長度、發送消息的閥值、消息升級的策略、消息壓縮的策略的值的存儲。
2 結論
消息平臺的構建實現了:(1)收發短信:通過短信網關和短信貓完成短消息的收發和消息格式的轉換,便于同第三方系統的交互。(2)收發郵件,通過收發郵件的功能,提供客戶以郵件的方式與第三方系統進行交互。(3)JMS消息交互,第三方系統通過我們API來實現短信和郵件的發送和其他附加功能的實現。(4)消息中心平臺帶有遠程監控功能,維護人員可以隨時隨地進行系統的監控,并根據情況可以遠程的操作系統,保證系統健康穩定的運行。
【參考文獻】
周玲,文紅民.AOP簡介及其在Spring中的實現.科技廣場.2005.12期
【作者簡介】
李帥(1985年6月—),男,遼寧沈陽人,同濟大學軟件學院碩士研究生。