freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)交換平臺中消息中間件的研究與實現(xiàn)碩士論-資料下載頁

2025-01-06 06:55本頁面
  

【正文】 中應(yīng)用程序數(shù)據(jù)屬性和消息體。消息頭攜帶了消息在消息系統(tǒng)中傳送時所需 要的 信息,包含對消息的一個宏觀描述,對于消息的正確發(fā)送和接受至關(guān)重要。 I 應(yīng)用程序數(shù) I 消息頭 消息屬性 消息體 I 據(jù)屬性 圖 3. 2 消息示意圖 1)消息頭包含的信息如下: 消息標識符:消息標識符在消息系統(tǒng)中唯一地標識了一條消息,消息生產(chǎn)者 負責創(chuàng)建消息的標識符,并且保證其全局唯一。消息標識符可以使消息代理能夠 檢測出重復(fù)的消息,并根據(jù)是否正確處理此消息決定是否丟棄當前重復(fù)消息。消 息標識符用一個 long 類型的變量表示。 消息目的地址:每條消息都有 一個目的地,該目的地與一個消息隊列相關(guān)聯(lián)。 該地址標識了消息最終到達的地點,此消息的消費者就在對應(yīng)的目的地消費消息。 消息目的地用一個 String 類型的變量表示。 消息的類型:根據(jù)消息的用途將消息分為三類,一類用于傳達遠程方法調(diào)用 這種指令,本文稱之為指令消息,一類用于傳送普通業(yè)務(wù)數(shù)據(jù),本文稱之為數(shù)據(jù) 消息,另一類用于傳送文件的通知消息,本文稱之為文件消息。消息類型用一個 枚舉類型的變量表示。 消息的優(yōu)先級:有些消息需要比其它消息更早地發(fā)送出去,否則會失去意義, 因此我們給每條消息設(shè)置一個優(yōu) 先級,優(yōu)先級高的消息比優(yōu)先級低的消息優(yōu)先被 發(fā)送、投遞出去。優(yōu)先級用一個 byte 類型的變量表示,取值范圍為整數(shù) 0 到 9, 分別代表從低到高的 lO 個優(yōu)先級。 , n 東華大學碩士研究生學位論文 消息的存活時間:我們給每條消息設(shè)定一個存活時間,消息在存活時間被認 為是有效的消息,超過存活時間的消息被認為是無效的,將會被刪除。消息存活 時間用一個 long 類型的變量表示。 消息的時間戳:我們在新建一條消息時給新建的消息設(shè)置一個時間戳,記錄 消息創(chuàng)建的時間,隨后消息系統(tǒng)就能知道消息到目前為止已產(chǎn) 生多長時間,進而 可以判斷消息是否還有有效。消息的時間戳用一個 long 類型的變量來表示。 2)消息屬性 消息屬性用于描述一種與具體類型的消息 (指令消息、數(shù)據(jù)消息、文件消息 中的一種 )相關(guān)的信息。 3)消息中應(yīng)用程序數(shù)據(jù)屬性 消息屬性是應(yīng)用程序創(chuàng)建消息時給消息設(shè)置的與業(yè)務(wù)數(shù)據(jù)相關(guān)的屬性值,每 一個屬性用一個鍵值對表示。每個屬性的鍵為字符串類型,即 String 類型,屬性 的值的類型可以為布爾類型 Boolean,字節(jié)類型 Byte,字節(jié)數(shù)組類型 Byte[1,短 整型 Short,整形 Integer, 長整型 Long,浮點型 Float,雙精度浮點型 Double, 字符串類型 String。 4)消息體 消息體是應(yīng)用程序需要發(fā)送的應(yīng)用程序數(shù)據(jù),是整個消息的負載,也是整個 消息的核心數(shù)據(jù),消息體用一個字節(jié)數(shù)組 Byte 口來表示。在創(chuàng)建消息時,任何結(jié) 構(gòu)化的業(yè)務(wù)數(shù)據(jù)都先編碼成一個字節(jié)數(shù)據(jù),然后將字節(jié)數(shù)組復(fù)制到消息體中。 表 3. 1和 3. 2 分別列出了具體類型消息中的數(shù)據(jù)消息和文件消息的消息屬性 名稱、消息屬性類型以及該屬性的作用。 表 3. 1 數(shù)據(jù)消息■性 屬性名稱 類型 作用 dataType String 描述數(shù)據(jù)類型 encoding String 描述數(shù)據(jù)編碼類型 表 3. 2 文件洧息晨性 屬性名稱 類型 作用 srcldentifior String 文件發(fā)送方節(jié)點名稱 centerldentifier String 文件轉(zhuǎn)發(fā)方節(jié)點名稱 destldentifier String 文件接受方節(jié)點名稱 filename String 文件名稱 東華大學碩士研究生學位論文 filesize Long 文件大小 fileChecksum String 文件消息摘要 sendFilePath String 待發(fā)送文件路徑 receivedFilePath String 已接受文件路徑 消息類層次圖如圖 3. 3 所示,抽象消息類定義了三種具體類型的消息的共同 的東西。指令消息類繼承自抽象消息類,添加了指令消息特定的消息屬性,用于 分布式系統(tǒng)之間傳送指令。數(shù)據(jù)消息類繼承自抽象消息類,添加了數(shù)據(jù)消息類特 定的消息屬性,用于分布式系統(tǒng)之間傳送業(yè)務(wù)數(shù)據(jù)。文件消息類繼承自抽象消息 類,添加了文件消息類特定的屬性,用于分布式系統(tǒng)之間傳送文件傳輸請求消息 或文件傳輸己完成消息 。 圖 3. 3 消息類層次圖 3. 2. 3 消息生產(chǎn)者 消息生產(chǎn)者負責消息的創(chuàng)建。應(yīng)用程序需要發(fā)送消息時,首先要確保消息代 理已經(jīng)啟動并就緒,然后獲取消息代理類的實例。消息代理服務(wù)類實例采用單實 例模式,即程序運行過程中只有一個消息代理類實例。取得消息代理類實例后, 通過消息代理類實例創(chuàng)建出消息生產(chǎn)者。消息生產(chǎn)者是一個工廠類,負責各種具 體類型的消息的原型創(chuàng)建。因為生產(chǎn)者創(chuàng)建出的消息只是設(shè)置好了消息頭,消息 的其它部分如消息屬性,應(yīng)用程序特定的屬性,消息體需要應(yīng)用程序代碼完成 設(shè) 置。應(yīng)用程序發(fā)送一條消息的處理流程如圖 3. 4 所示。消息生產(chǎn)者是一個工廠類, 具有三個工廠方法,分別對應(yīng)指令消息、數(shù)據(jù)消息和文件消息。創(chuàng)建消息的三個 工廠方法代碼如下: 砒方法創(chuàng)建出一條指令消息的方法接口。 CommandMessage createCommandMessage(String Address); //此方法創(chuàng)建一條數(shù)據(jù)消息的方法接口。 DataMessagc createDataMessage(String Address); /,此方法創(chuàng)建一條文件消息的方法接口。 FileMessage crcatcFileMessage(String Address); 獲取消息代理服務(wù)類實例 上 從消息代理服務(wù)類實例創(chuàng)建消息生產(chǎn)者 、 L 使用消息生產(chǎn)者創(chuàng)建消息 土 I使用消息生產(chǎn)者推送消息到本地消息發(fā)送地址 3. 2. 4 消息消費者 消息消費者是消息的最終歸宿點。消息消費者負責從指定消息隊列中取出消 息,然后將消息交給應(yīng)用程序處理。消息消費者獲取消息的方式分為主動輪詢方 式、阻塞調(diào)用方式和消息監(jiān)聽方式三種。主動輪詢方式中,消息消費者定期查詢 消息隊列是否已經(jīng)收到消息,如果收到消息,則取出消息,交給應(yīng)用程序處理, 否則,立即或者睡眠一段時間再去輪詢消息隊列,如此往復(fù)。主動輪詢方式的一 個最大缺點是會在消息較少的情況下浪費很多資源做一些無用功。主動輪詢方式 的工作流程圖如圖 3. 5 所示,應(yīng)用程序先取得消息服務(wù)類實例,此消息服務(wù)類實 例與消息生產(chǎn)者中一樣,也是單實例模式,及整個應(yīng)用程序中只存在一個實例。 取得消息服務(wù)類實例后,通過消息服務(wù)類實例創(chuàng)建一個消息消費者,然后消息消 費者不斷輪詢對應(yīng)接收地址時候有消息,直到收到消息為止。 東華大學碩士研究生學位論文 圖 3. 5 輪詢方式接受消息 輪詢方式的一個變種為阻塞方式,就是消費者調(diào)用獲取消息方法后,不像輪 詢方式那樣,不管有沒有消息,都返回,而是一直阻塞調(diào)用,直到有消息時才返 回。這種方式的一個缺點就是消息消費者會阻塞應(yīng)用。 消息監(jiān)聽方式與前面兩種都不同,消息消費者并不主動去獲取消息,而是在 特定地址的消息接收隊列注冊一個消息監(jiān)聽器,消息接收隊列一旦收到消息立馬 通知消息監(jiān)聽器,即調(diào)用監(jiān)聽器的方法。應(yīng)用程序在監(jiān)聽器中的 onMessage 方法 中實現(xiàn)具體的業(yè)務(wù)邏輯。這種方法的一個好處就是,只有真正有消息時才會觸發(fā) 應(yīng)用的代碼執(zhí)行。消息監(jiān)聽器的接口如下面代碼所示: r, ubiie巹磚 si 黼晦薛 i 辯矗赫{(diào)一 一 j;爹 _I≯|} “| 臌收割 _條消患后作也反應(yīng) i j; l vOid onMessage(AbstractMessage message); 一 ■ 0 ≯ _||__i。; _|o : 3. 3消息地址與隊列 消息地址是消息的一個 目的地。一條消息在其生命周期內(nèi)在消息系統(tǒng)中從一 個地址轉(zhuǎn)移到另一個地址。當一條消息被消息消費者消費或者從被創(chuàng)建開始已經(jīng) 存在的時間超過消息最大生存時間而失效時,消息從對應(yīng)地址被刪除。 3. 3. 1 消息地址 24 _______●_____________●_● 一 _. ●●———奎 I竺 奎 蘭 ———————————堡主堡壅 一一 圭蘭篁笙莖 —— 消息地址按用途可以分為發(fā)送地址、接收地址、中轉(zhuǎn)地址。 1)發(fā)送地址 發(fā)送地址,是指消息發(fā)送時進入的地址,發(fā)送地址的消息將會由 消息發(fā)送器 發(fā)送出去,消息可能被發(fā)送到一個接收地址,也可能被發(fā)送到一個中轉(zhuǎn)地址。發(fā) 送地址一般由消息生產(chǎn)者使用,消息生產(chǎn)者將消息推入本地的發(fā)送隊列,此后該 隊列的發(fā)送器將會將該消息投遞到對應(yīng)的目的隊列。 2)接收地址 接收地址,是指消息被接收時進入的地址,消息接收器從網(wǎng)絡(luò)上收到一條消 息后根據(jù)其目的地址決定消息進入到哪個接收地址。消息消費從對應(yīng)的消息接收 地址消費消息。 3)中轉(zhuǎn)地址 中轉(zhuǎn)地址,是指消息中轉(zhuǎn)時進入的地址,消息只是在此中轉(zhuǎn),這里并不是消 息的最終目的地。消息接收者根據(jù)其消息的目 的地址為哪個中轉(zhuǎn)地址將消息進入 到對應(yīng)的中轉(zhuǎn)地址。中轉(zhuǎn)地址的消息發(fā)送器從中轉(zhuǎn)地址取出消息,然后將其投遞 到最終目的地。 3. 3. 2 隊列 隊列是消息的實際存放地點。隊列按用途可以分為發(fā)送隊列和接收隊列。發(fā) 送隊列位于消息生產(chǎn)者所在節(jié)點,接收隊列位于消息消費者所在節(jié)點。發(fā)送隊列 是接收隊列的一個影子隊列,即從邏輯上看,消息生產(chǎn)者將消息放入發(fā)送隊列即 相當于消息生產(chǎn)者將消息放入其對應(yīng)的接收隊列,消息消費者從接收隊列接收消 息。消息發(fā)送器負責將消息從接收隊列的影子隊列發(fā)送到接收隊列。每個地址與 一個發(fā)送隊列和一個接收隊列相關(guān)聯(lián)。消息生產(chǎn)者根據(jù)消息地址將消息放入對應(yīng) 的發(fā)送隊列,消息消費者根據(jù)地址從接收隊列獲取消息。 3. 4消息發(fā)送器 消息發(fā)送隊列的消息發(fā)送器負責從發(fā)送隊列中取出消息通過網(wǎng)絡(luò)投遞到目 的地。每個消息發(fā)送隊列一個消息發(fā)送器,消息發(fā)送器的生命周期與消息發(fā)送隊 列直接相關(guān)。消息發(fā)送器隨著消息發(fā)送隊列的創(chuàng)建而創(chuàng)建,創(chuàng)建之后根據(jù)消息發(fā) 送隊列找到相應(yīng)的節(jié)點唯一標識,然后根據(jù)節(jié)點唯一標識找到連接器配置信息。 消息發(fā)送器根據(jù)連接器配置信息創(chuàng)建網(wǎng)絡(luò)連接器,建立與消息發(fā)送隊列對應(yīng)的遠 程消息接收隊列所在節(jié)點的網(wǎng)絡(luò)連接,建立好網(wǎng)絡(luò)連接后啟動會話,啟動會話成 功后,消息發(fā)送器就開始從消息發(fā)送隊列中取出消息,依次將其發(fā)送到消息發(fā)送 服務(wù)器發(fā)送一個會話創(chuàng)建響應(yīng)數(shù)據(jù)包給客戶端,客戶端收到會話響應(yīng)數(shù)據(jù)包后, 在客戶端也建一個與此會話通道相關(guān)的會話對象。如果一切正常,至此,客戶端 與服務(wù)器端的會話建立成功。 會話創(chuàng)建響應(yīng)數(shù)據(jù)包的字段內(nèi)容如表 3. 4 所示。 表 3. 4 會話刨建響應(yīng)數(shù)據(jù)包 字段 類型 作用 Version $1ring 服務(wù)器支持的協(xié)議版本號 3)數(shù)據(jù)發(fā)送 數(shù)據(jù)包 數(shù)據(jù)發(fā)送數(shù)據(jù)包,用于承載實際的消息數(shù)據(jù),消息發(fā)送器將消息編碼成一個 字節(jié)數(shù)組后,將這個字節(jié)數(shù)組作為數(shù)據(jù)發(fā)送數(shù)據(jù)包的數(shù)據(jù)包體。 數(shù)據(jù)發(fā)送數(shù)據(jù)包的字段內(nèi)容如表 3. 5 所示。 表 3. 5 數(shù)據(jù)發(fā)送數(shù)據(jù)包 字段 類型 作用 Message Message 持有要發(fā)送的消息 4)數(shù)據(jù)發(fā)送確認數(shù)據(jù)包 為了保證數(shù)據(jù)包傳輸?shù)目煽啃?,服?wù)器收到數(shù)據(jù)包后,需要確認那些數(shù)據(jù)包 已經(jīng)收到。 數(shù)據(jù)發(fā)送確認數(shù)據(jù)包的字段如表 3. 6 所示。 表 3. 6 數(shù)據(jù)發(fā)送確認數(shù)據(jù)包 字段 類型 作用 SequencelD Long 指示 SequenceID 之前的數(shù)據(jù)包都已收到 5)會話關(guān)閉數(shù)據(jù)包 客戶端想關(guān)閉會話時,向服務(wù)器發(fā)送一個會話關(guān)閉數(shù)據(jù)包,服務(wù)器收到會話 關(guān)閉數(shù)據(jù)包后,清除所有此會話相關(guān)的資源。然后回應(yīng)一個會話關(guān)閉響應(yīng)數(shù)據(jù)包 給客戶端。 6)會話關(guān)閉響應(yīng)數(shù)據(jù)包 客戶端發(fā)送一個會話關(guān)閉數(shù)據(jù)包后,服務(wù)器關(guān)閉好會話后,給客戶端發(fā)送會 話己關(guān)閉的響應(yīng)數(shù)據(jù)包,通知客戶端服務(wù)器端會話已關(guān)閉,客戶端收到此響應(yīng)后, 將客戶端會話也關(guān)閉。 28 3. 7客戶端會話 客戶端會話是客戶端與服務(wù)器端建立連接后,通 過發(fā)送一個會話創(chuàng)建數(shù)據(jù)包, 服務(wù)器收到一個會話創(chuàng)建數(shù)
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1