新四季網

一種用於集群的消息隊列接收方法及系統的製作方法

2023-05-07 16:57:56 4

一種用於集群的消息隊列接收方法及系統的製作方法
【專利摘要】本發明公開了一種用於集群的消息隊列接收方法,其包括:以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分段消息並存儲到分段消息表中;掃描分段消息表,根據分段消息中的消息Flag確定該分段消息是否為最後一段消息;根據已被確定為最後一段消息的分段消息的消息描述符計算該分段消息所屬的完整消息的總長度;將分段消息表中的各分段消息按消息ID進行排序,對具有同一消息ID的一組分段消息進行長度求和,當計算的該長度等於計算的總長度時,將該組分段消息拼接為完整消息。本發明同時公開了一種用於集群的消息隊列接收系統。本發明能夠對分散在集群的各個不同隊列中的分段消息進行拼接,確保了消息的完整性。
【專利說明】一種用於集群的消息隊列接收方法及系統

【技術領域】
[0001] 本發明涉及通信領域,更具體的,涉及一種用於集群的消息隊列的接收方法。

【背景技術】
[0002] 計算機集群簡稱集群,是一種並行或分布式處理系統。集群就是通過一組鬆散集 成的計算機相互連接,高度緊密地協作完成所需要的計算工作。其中,單個計算機通常被稱 為節點。在集群中節點進行並行處理、存儲數據、進行協同工作,使得集群對外表現為一個 整體。
[0003] 消息隊列(MQ)是一種應用程式間進行進程通信的方法。應用程式通過寫入和讀 取出入隊列的針對應用程式的數據(消息)來通信,而無需專用連接。消息傳遞指的是程 序之間通過在消息中發送數據進行通信,而不是通過遠程過程調用實現通信。隊列的使用 除去了接收和發送應用程式需要同時執行的要求,實現程序間解耦的目的。消息隊列是一 個典型的生產者、消費者模型,一端往消息隊列中不斷的寫入消息,而另一端則可以讀取或 者訂閱隊列中的消息。
[0004] MQ提供了消息分段的功能,如果消息對於應用程式來說過大,可以使用分段消息。 消息可以由應用程式或隊列管理器來分段,例如由應用程式在調用MQPUT放入消息時,使 用MQ提供的分段參數設置,將一個消息分段為多個消息放入隊列。如下是一個應用程式將 消息分段發送的示例:
[0005] MQMD. MsgType = MQMT......DATAGRAM; MQPMO. Persistence = MQPER.......PERSISTENT; 丨Γ發送第1段、笫2段……倒數笫2段 MQMD. MsgFlags = MQMF.......SEGMENT; MQPMO. Opt ions = MQPMO IDGICAL ORDER ] MQPMO SYNCP0TNT; cl so i Γ發送段 MQMD. MsgFlags = MQMF LAST SEGMENT; MQPMO.Op lions = MQPMO _______LOGICAL_______ORDER MQPMO_______SYNCP0TN 丁;
[0006]
[0007] 對於應用程式分段的消息,在調用MQGET取出消息時,使用MQ提供的參數設置,可 在分段消息全部到達時作為一個整體取出,如下是將分段消息作為整體取出的MQ參數設 置示例:
[0008] MQGM0. Options = MQGM0_SYNCP0INT
[0009] MQGM0. Options| = MQGM0_L0GICAL_0RDER
[0010] MQGMO_ALL_MSGS_AVAILABLE
[0011] MQGMO_ALL_SEGMENTS_AVAILABLE ;
[0012] MQGMO. MatchOptions = MQM0_N0NE ;
[0013] 在非集群環境下,分段消息經過傳輸隊列到達目標接收隊列,可以通過設置相關 參數,在到齊後再進行讀取,即可從接收隊列取出整個消息,多段消息可自動合併為一段作 為整體被取出。
[0014] 但是在集群環境中,分段消息如果從集群外的隊列管理器經過集群網關發送到集 群內的各節點,則不能確保一組分段消息中的各段消息都到達同一隊列管理器上的隊列, 這樣分段消息被分發到了集群中不同的隊列中,由於每個節點上消息不完整,無法通過設 置相關參數,在一組分段消息的所有分段到齊後再進行讀取。


【發明內容】

[0015] 本發明的目的是提供一種能夠用於集群環境的消息隊列分段接收方法,並能夠確 保接收的消息完整。
[0016] 為此,本發明提供了一種用於集群的消息隊列接收方法,其包括:
[0017] S1、以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分段消息並存儲到 分段消息表中,所述多個分段消息來自多個不同的完整消息;
[0018] S2、掃描所述分段消息表,根據所述分段消息中的消息Flag確定該分段消息是否 為來自同一個完整消息的多個分段消息中的最後一段消息;
[0019] S3、根據已被確定為最後一段消息的所述分段消息的消息描述符計算該分段消息 所屬的完整消息的總長度並進行記錄;
[0020] S4、將所述分段消息表中的各所述分段消息按消息ID進行排序,對具有同一消息 ID的一組分段消息進行長度求和,如果計算的該長度等於步驟S3中計算的所述總長度,則 將該組分段消息拼接為所述完整消息並存儲到完整消息接收表中。
[0021] 本發明同時提供了一種用於集群的消息隊列接收系統,其包括:
[0022] 讀取單元,其配置為以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分 段消息並存儲到分段消息表中,所述多個分段消息來自多個不同的完整消息;
[0023] 掃描單元,其配置為掃描所述分段消息表,並根據所述分段消息中的消息Flag確 定該分段消息是否為來自同一個完整消息的多個分段消息中的最後一段消息;
[0024] 計算單元,其配置為根據由所述掃描單元確定為最後一段消息的所述分段消息的 消息描述符計算該分段消息所屬的完整消息的總長度,以及對具有同一消息ID的一組分 段消息進行長度求和;
[0025] 拼接單元,其配置為當所述計算單元計算的長度求和值等於其計算的所述總長 度,則將該組分段消息拼接為所述完整消息並存儲到完整消息接收表中;
[0026] 存儲單元,其連接到所述讀取單元、掃描單元、計算單元和拼接單元,用於存儲所 述分段消息表、所述完整消息接收表、所述長度求和值和所述總長度。
[0027] 通過本發明的用於集群的消息隊列接收方法及系統,能夠對分散在集群的各個不 同隊列中的分段消息進行拼接,確保了消息的完整性。

【專利附圖】

【附圖說明】
[0028] 圖1是本發明的用於集群的消息隊列接收方法的流程圖;
[0029] 圖2是根據本發明的集群中接收消息隊列的整體架構示意圖;
[0030] 圖3是根據本發明的集群中接收消息隊列的過程示意圖;
[0031] 圖4是根據本發明的用於集群的消息隊列接收系統的流程圖。

【具體實施方式】
[0032] 下面參照附圖對本發明的用於集群的消息隊列接收方法和系統進行詳細說明。
[0033] 圖1是本發明的用於集群的消息隊列接收方法的流程圖;圖2是根據本發明的集 群中接收消息隊列的整體架構示意圖;圖3是根據本發明的集群中接收消息隊列的過程示 意圖。
[0034] 如圖1-3所示,本發明的用於集群的消息隊列接收方法包括步驟S1-S4 :
[0035] S1、以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分段消息並存儲到 分段消息表中,該多個分段消息來自多個不同的完整消息;
[0036] 由於當MQ分段消息從集群外隊列管理器通過集群網關發送到集群內各隊列管理 器節點時,來自同一完整消息的一組分段消息中的各個分段消息被發送到了不同的隊列 上,因此本發明中在調用MQGET讀取分段消息時,不設置MQ提供的取分段消息的參數,不再 按已有的分段消息的讀取方式,而是將每個分段消息作為獨立的消息取出後,由應用程式 (例如ORACLE)進行拼接。
[0037] 以一個被應用程式分為五段的消息為例,在集群中不同的隊列按不分段的方式取 出,每段消息的消息描述MD及消息內容如下:
[0038] 第1段消息:
[0039] MsgId:X313030394343495330383032303030303030343500000000
[0040] GroupId:X414D5120514D4331303039202020202008C70A4D2069D71F
[0041] MsgSeqNumber: 1
[0042] Offset :0
[0043] MsgFlag: MQMF-SEGMENT ΓΒ
[0044] Message Len: 139
[0045] Message:
[0046] H{1:4601CIS1009999100000011 1009CCIS080200000045 20080615}
[0047] 第2段消息:
[0048] Msgld:0X313030394343495330383032303030303030343500000000
[0049] GroupId:0X414D5120514D4331303039202020202008C70A4D2069D71F
[0050] MsgSeqNumber: 1
[0051] Offset: 139
[0052] MsgFlag: MQMF-SEGMENT ΓΒ
[0053] Message Len:1048576
[0054] Message:
[0055] B{3::B11:20070821:B10:999100000011:D1A:0:D1B:RMB0:D1C:25974:D1D:RMB42 5049930:DIE (省略)
[0056] 第3段消息:
[0057] Msgld:0X313030394343495330383032303030303030343500000000
[0058] GroupId:0X414D5120514D4331303039202020202008C70A4D2069D71F
[0059] MsgSeqNumber:1
[0060] Offset:1048715
[0061] MsgFlag:MQMF_SEGMENT|~B
[0062] Message Len:1048576
[0063] Message:
[0064] B02715003311410000000000231780510022007082100111000271500331142000000 00001787805(省略)
[0065] 第4段消息:
[0066] Msgld:0X313030394343495330383032303030303030343500000000
[0067] GroupId:0X414D5120514D4331303039202020202008C70A4D2069D71F
[0068] MsgSeqNumber:1
[0069] Offset :2097291
[0070] MsgFlag:MQMF_SEGMENT|~B
[0071] Message Len:154750
[0072] Message:
[0073] B69060510122007082100111000271500352562000000000012234051012200708210 01110002715(省略)
[0074] 第5段消息:
[0075] Msgld:0X313030394343495330383032303030303030343500000000
[0076] GroupId:0X414D5120514D4331303039202020202008C70A4D2069D71F
[0077] MsgSeqNumber:1
[0078] Offset :2252041
[0079] MsgFlag:MQMF_SEGMENT|MQMF_LAST_SEGMENT|~F
[0080] Message Len:37
[0081] Message:
[0082] T{C: }
[0083] 在本發明一個實施例中,可在步驟SI中以所述分段消息的消息ID、組ID和偏移量 為主鍵,來將讀取到的所述分段消息存儲到所述分段消息表中。步驟S1還可以包括:記錄 各分段消息的消息描述符,並將分段消息正文寫入所述分段消息表的lob欄位,以備後續 拼接之用。
[0084] 本發明中的分段消息表的示例性結構如下表1所示:
[0085] 表 1
[0086]

【權利要求】
1. 一種用於集群的消息隊列接收方法,其包括: 51、 以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分段消息並存儲到分段 消息表中,所述多個分段消息來自多個不同的完整消息; 52、 掃描所述分段消息表,根據所述分段消息中的消息Flag確定該分段消息是否為來 自同一個完整消息的多個分段消息中的最後一段消息; 53、 根據已被確定為最後一段消息的所述分段消息的消息描述符計算該分段消息所屬 的完整消息的總長度並進行記錄; 54、 將所述分段消息表中的各所述分段消息按消息ID進行排序,對具有同一消息ID的 一組分段消息進行長度求和,當計算的該長度等於步驟S3中計算的所述總長度時,將該組 分段消息拼接為所述完整消息並存儲到完整消息接收表中。
2. 根據權利要求1所述的消息隊列接收方法,其特徵在於,在步驟S1中,以所述分段消 息的消息ID、組ID和偏移量為主鍵,將讀取到的所述分段消息存儲到所述分段消息表中。
3. 根據權利要求2所述的消息隊列接收方法,其特徵在於,步驟S1還包括:記錄各所 述分段消息的消息描述符,並將所述分段消息正文寫入所述分段消息表的lob欄位。
4. 根據權利要求2所述的消息隊列接收方法,其特徵在於,步驟S4中的將所述分段消 息表中的各所述分段消息按消息ID進行排序包括:掃描所述分段消息表,將具有相同的所 述組ID的一組分段消息按消息ID進行排序。
5. 根據權利要求3所述的消息隊列接收方法,其特徵在於,步驟S4中的將該組分段消 息拼接為所述完整消息包括:對於所述具有同一消息ID的一組分段消息,讀取所述分段消 息表的lob欄位,按照偏移量進行排序,依次將所述lob欄位中的內容拼接起來,組成所述 完整消息。
6. -種用於集群的消息隊列接收系統,其包括: 讀取單元,其配置為以讀取獨立消息的方式從集群中的各個消息隊列讀取多個分段消 息並存儲到分段消息表中,所述多個分段消息來自多個不同的完整消息; 掃描單元,其配置為掃描所述分段消息表,並根據所述分段消息中的消息Flag確定該 分段消息是否為來自同一個完整消息的多個分段消息中的最後一段消息; 計算單元,其配置為根據由所述掃描單元確定為最後一段消息的所述分段消息的消息 描述符計算該分段消息所屬的完整消息的總長度,以及對具有同一消息ID的一組分段消 息進行長度求和; 拼接單元,其配置為當所述計算單元計算的長度求和值等於其計算的所述總長度,則 將該組分段消息拼接為所述完整消息並存儲到完整消息接收表中; 存儲單元,其連接到所述讀取單元、掃描單元、計算單元和拼接單元,用於存儲所述分 段消息表、所述完整消息接收表、所述長度求和值和所述總長度。
7. 根據權利要求6所述的消息隊列接收系統,其特徵在於,所述讀取單元具體配置為 以所述分段消息的消息ID、組ID和偏移量為主鍵而將讀取到的所述分段消息存儲到所述 分段消息表中。
8. 根據權利要求7所述的消息隊列接收系統,其特徵在於,所述讀取單元具體配置為 記錄各所述分段消息的消息描述符,並將所述分段消息正文寫入所述分段消息表的備份字 段。
9. 根據權利要求7所述的消息隊列接收系統,其特徵在於,還包括排序單元,其配置為 將所述分段消息表中的具有相同的所述組ID的一組分段消息按消息ID進行排序。
10. 根據權利要求8所述的消息隊列接收方法,其特徵在於,所述拼接單元具體配置 為:對於所述具有同一消息ID的一組分段消息,讀取所述分段消息表的lob欄位,按照偏移 量從小到大的順序,依次將所述lob欄位中的內容拼接起來,組成所述完整消息。
【文檔編號】H04L29/08GK104125283SQ201410370190
【公開日】2014年10月29日 申請日期:2014年7月30日 優先權日:2014年7月30日
【發明者】張徑姝, 施政 申請人:中國銀行股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀