[發明專利]消息中間件消息獲取方法、裝置和系統有效
| 申請號: | 201710658525.8 | 申請日: | 2017-08-04 |
| 公開(公告)號: | CN109391646B | 公開(公告)日: | 2021-08-17 |
| 發明(設計)人: | 林棋;夏勇;鄭東建;肖慶云;段江南;黃景平;曾康;彭亮 | 申請(專利權)人: | 中國電信股份有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08 |
| 代理公司: | 中國貿促會專利商標事務所有限公司 11038 | 代理人: | 王云飛 |
| 地址: | 100033 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 消息 中間件 獲取 方法 裝置 系統 | ||
本發明公開一種消息中間件消息獲取方法、裝置和系統。該方法包括:接收消息處理端發送的消息拉取請求,其中消息拉取請求中包括目標消息位置;獲取消息隊列的處理進度,其中所述處理進度為當前操作之前消息隊列的游標位置,處理進度之后的消息從未被獲取過;比較目標消息位置和處理進度;若目標消息位置處于處理進度之后,則生成目標消息的消息處理狀態信息,并將所述消息處理狀態存儲在消息處理狀態緩存中;將目標消息推送給消息處理端。本發明通過在處理階段完成時更新消息的狀態,查詢消息處理狀態緩存中的消息處理狀態,將處理狀態符合的消息推送給對應消息處理端,避免了消息處理端進行不必要的消息獲取。
技術領域
本發明涉及數據處理技術領域,特別涉及一種消息中間件消息獲取方法、裝置和系統。
背景技術
消息中間件是指支持與保障分布式應用程序之間收發消息數據的中間層,消息發送方和處理方之間的連接完全是松耦合的,通信是非阻塞的。常見的產品有RabbitMQ(MQ的全稱為Message Queue,消息隊列)、RocketMQ等。
消息中間件的基本工作原理為:消息數據存儲于服務端的消息隊列中,消息處理端從消息隊列中拉取消息進行處理。
圖1為現有消息中間件消息獲取方法的示意圖。如圖1所示,為現有消息中間件消息獲取方法中:
1、消息處理端批量從服務端拉取消息,服務端存儲消息隊列的處理進度。
2、消息的處理結果和狀態都存儲于各個消息處理端中。
3、倘若在消息處理未完成時消息處理端出現異常錯誤或者由于業務需要重試處理消息時,向服務端的批量拉取很可能獲取到已經處理完成的消息,導致重復處理。
4、中間件配套的管理查詢系統中很難高效地獲取消息實時的處理狀態。
現有的消息中間件為了保證消息處理的性能,通常通過批量方式從消息隊列中順序獲取消息,然后把消息的處理狀態存儲在處理端。但是當該批消息中有個別消息處理失敗或者由于業務需要重試處理時,處理端的批量操作也會對目標消息在消息隊列中鄰近的已處理完成的消息進行不必要的重復獲取。
發明內容
鑒于以上技術問題,本發明提供了一種消息中間件消息獲取方法、裝置和系統,在處理階段完成時更新消息的狀態,避免了消息處理端進行不必要的消息獲取。
根據本發明的一個方面,提供一種消息中間件消息獲取方法,包括:
接收消息處理端發送的消息拉取請求,其中,所述消息拉取請求中包括目標消息位置;
獲取消息隊列的處理進度,其中,所述處理進度為當前操作之前消息隊列的游標位置,處理進度之后的消息從未被獲取過;
比較目標消息位置和處理進度;
若目標消息位置處于處理進度之后,則生成目標消息的消息處理狀態信息,并將所述消息處理狀態信息存儲在消息處理狀態緩存中;
將目標消息推送給消息處理端。
在本發明的一個實施例中,所述方法還包括:
在目標消息推送成功的情況下,將目標消息的消息處理狀態信息修改為已拉取,并將目標消息的消息處理狀態更新到消息處理狀態信息緩存;
和/或,
在消息處理端處理成功、返回處理結果的情況下,將消息處理狀態緩存中目標消息的消息處理狀態信息刪除。
在本發明的一個實施例中,所述目標消息位置處于簽收進度之后,其中,消息隊列的簽收進度之后的消息為消息隊列中尚未收到消息處理端返回處理成功結果的消息。
在本發明的一個實施例中,所述方法還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國電信股份有限公司,未經中國電信股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710658525.8/2.html,轉載請聲明來源鉆瓜專利網。





