[發明專利]一種消息中間件的消息存儲管理方法和系統有效
| 申請號: | 201210041373.4 | 申請日: | 2012-02-21 |
| 公開(公告)號: | CN103259828A | 公開(公告)日: | 2013-08-21 |
| 發明(設計)人: | 馬震;曾憲杰;莊曉丹 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L12/58;G06F17/30 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 逯長明;王寶筠 |
| 地址: | 英屬開曼群島大開曼*** | 國省代碼: | 開曼群島;KY |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 消息 中間件 存儲 管理 方法 系統 | ||
技術領域
本申請涉及消息存儲領域,尤其涉及一種消息中間件的消息存儲管理方法和系統。
背景技術
消息中間件是采用異步方式在消息發布者和訂閱者間傳送消息的系統。由于采用異步方式發布,所以需要將當前還沒有發送完的消息存儲在數據庫中,在消息發送成功后將消息從數據庫中刪除。
現有技術中為了允許用戶回滾,即對數據庫中的消息進行刪除操作都會維護索引和日志,以便通過日志可以恢復已經刪除的消息,但這樣做會在處理大量的消息存儲時產生大量的日志,占用有限的存儲空間,嚴重時,將導致消息中間件無法提供正常的服務功能。
即便是對于不維護日志的消息管理方式,也會對數據庫中的每條消息維護一個狀態值,即數據庫中的每條記錄存儲一條消息(包括未發送的和已發送的)和該消息的狀態值,通過該狀態值反映數據庫中的消息的發送狀態,例如,對應已經發送的消息已經被發送,則該消息的狀態值為“已發送”;對于還未發送的消息,該消息的狀態值為“未發送”。也就是說,該方法在消息發送完成后,并不刪除數據庫中的該消息,而是通過每條消息的狀態值確定消息是否已經發送,雖然消息的刪除過程中并不產生日志文件,但是由于消息一直都存儲在數據庫中,這將導致數據庫中的消息存儲控制空間越來越龐大,最終也可能導致消息中間件無法提供正常的功能。
發明內容
有鑒于此,本申請的目的在于,提供一種消息中間件的消息的存儲管理方法和系統,以避免產生現有技術中消息所占存儲空間過大的問題。
為實現上述目的,本申請的一個實施例提供一種消息中間件的消息的存儲管理方法,包括:消息接收步驟、消息發送步驟和數據表切換步驟;
所述消息接收步驟包括:接收消息,并將其存儲入狀態為“活動”狀態的數據表中;
所述消息發送步驟包括:發送所述活動狀態的數據表中存儲的尚未發送的消息;
所述數據表切換步驟包括:當處于“活動”狀態的數據表中的消息數目超過預定閾值時,將該消息數目超過預定閾值的數據表的狀態切換為“已使用”狀態;并將一個處于“未使用”狀態的數據表的狀態切換為“活動”狀態,以存儲后續接收到的消息;
從處于“已使用”狀態的數據表中選擇需要進行清除消息的數據表,將該需要進行清除消息的數據表中未發送的消息遷移至當前處于“活動”狀態的數據表中;遷移完成后清除被遷移消息的數據表中存儲的消息。
另一方面,本申請的另一個實施例還提供一種消息中間件的消息存儲管理系統,包括數據表存儲裝置、消息中間件服務器和監控裝置;
消息接收模塊,用于接收消息,并將其存儲入狀態為“活動”狀態的數據表中;
消息發送模塊,用于發送所述“活動”狀態的數據表中存儲的尚未發送的消息;
監控模塊,用于監控處于“活動”狀態的數據表中的消息數目是否超過預定閾值,如果監控到超過預定閾值,則觸發第一切換模塊進行工作;
第一切換模塊,用于在收到所述監控模塊的觸發信號后,將所述監控模塊監控到的消息數目超過預定閾值的數據表的狀態切換為“已使用”狀態,并將一個處于“未使用”狀態的數據表的狀態切換為“活動”狀態,以存儲后續接收到的消息;
選擇模塊,用于從處于“已使用”狀態的數據表中選擇需要進行清除消息的數據表,并觸發第二切換模塊工作;
第二切換模塊,用于在收到所述選擇模塊的觸發信號后,將所選擇的需要進行清除消息的數據表中未發送的消息遷移至當前處于“活動”狀態的數據表中;遷移完成后,清除被遷移消息的數據表中存儲的消息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210041373.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:自動防盜鎖
- 下一篇:推送應用的方法和裝置





