專利名稱:對通信檔案進行協調和補救的制作方法
對通信檔案進行協調和補救背景電子郵件(e-mail)提供了用于端對端消息傳遞的存儲并轉發方法,這種方法允 許消息跨越多個機器、通過各種組織和網絡傳播,并幸免于暫時連接中斷。這一異步方法的 不利之處在于,發送用戶或組織沒有辦法真正知道接收者是否以及何時接收到消息以及是 否已經成功完成任何接收后處理。在電子郵件檔案的情況中,這一問題尤其普遍。經受由于遵守規章制度和法院指 令而帶來的電子郵件保留要求的企業和組織需要能夠從這樣的檔案搜索和產生電子郵件。 不能這樣做的話,會導致大筆罰金和聲譽損害。由于當前的電子郵件系統不能保證被發送 給檔案的消息已經被成功地保存在檔案中,這些企業蒙受除了在他們的檔案中進行搜索之 外還不得不在冗余備份中進行搜索的大量成本。從消息生成電子郵件系統的觀點來看,沿著到檔案的通道上存在若干潛在的數據 丟失點。例如,生成電子郵件系統或中介電子郵件系統會遭受軟件或硬件故障,且丟失去往 檔案的消息。另外,其中接收到消息的檔案的前端電子郵件系統或其中消息被保存到數據 庫的檔案注入系統會遭受軟件或硬件故障,且丟失去往檔案的消息。因此,需要進行改進以 便解決這些問題和其他問題,并保證在沒有事務處理的環境中消息的端對端傳遞和歸檔。概述提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本 發明內容并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于限定所 要求保護的主題的范圍。各實施例涉及用于協調和補救由服務器發送以供存儲在檔案中的消息的技術。一 些技術可以包括接收對應于由服務器發送給檔案以供存儲的消息的要協調的消息、對所接 收的要協調的消息進行分類、根據要協調的消息的分類來向檔案發出傳遞確認查詢、以及 基于對傳遞確認查詢的響應來確定從服務器發送給檔案的消息是否被存儲在檔案中。在接 收到對傳遞確認查詢的否定響應之后,可以發出重試查詢。在接收到對重試查詢的否定響 應之后,可將要協調的消息重新提交給檔案。可以存儲要協調的消息直到接收到確認,且在 接收到對傳遞確認查詢的肯定響應之后刪除該消息。描述并要求保護其他實施例。通過閱讀下面的“詳細描述”并參考相關聯的圖形,這些及其他特點和優點將變得 顯而易見。應該理解,前面的一般性的說明和下面的詳細描述只是說明性的,不會對如權利 要求所述的方面形成限制。附圖簡述
圖1示出操作環境的實施例。圖2示出計算設備的實施例。圖3示出協調應用程序的實施例。圖4示出圖的實施例。圖5示出消息流的實施例。圖6示出邏輯流程的實施例。
圖7示出制品的實施例。詳細描述各實施例包括被配置為執行某些操作、功能或服務的物理或邏輯結構。結構可以 包括物理結構、邏輯結構或兩者的組合。物理或邏輯結構是使用硬件元素、軟件元素或兩者 的組合來實現的。然而,參考特定硬件或軟件元素對實施例的描述只作為示例而非限制。 使用硬件或軟件元素以實際實踐實施例的決定取決于若干個外部因素,如所希望的計算速 率、功率水平、耐熱性、處理周期預算、輸入數據速率、輸出數據速率、存儲器資源、數據總線 速度,及其他設計或性能約束。此外,物理或邏輯結構還可以具有對應的物理或邏輯連接, 以便以電子信號或消息的形式在各結構之間傳達信息。連接可以包括對于信息或特定結構 適合的有線和/或無線連接。值得注意的是,任何對“一個實施例”或“一實施例”的引用 都意味著結合該實施例所描述的特定的特征、結構、或特性被包括在至少一個實施例中。出 現在說明書中各個地方的短語“在一個實施例中”不必全都指的是同一實施例。提供用于協調和補救由服務器發送以供存儲在檔案中的消息的各種技術。一些技 術可以包括接收對應于由服務器發送以供存儲在檔案中的消息的要協調的消息。可以對所 接收的要協調的消息進行分類,且可以根據要協調的消息的分類來向檔案發出傳遞確認查 詢。基于對傳遞確認查詢的響應,可以肯定地確定被發送給檔案以供存儲的消息是否確實 被存儲在該檔案中。另外地或另選地,在接收到對傳遞確認查詢的否定響應之后,可以發出 重試查詢。如果接收到對重試查詢的否定響應,可將要協調的消息重新提交給檔案。可以 存儲要協調的消息直到接收到確認,且僅在接收到對傳遞確認查詢的肯定響應之后刪除該 消息,以保證消息的可用性。圖1示出了適于實施各實施例的操作環境100的框圖。操作環境100可以包括為 通過單個實體環境或多個實體分布式環境的實現而設計的元素。根據對于給定一組設計參 數或性能約束的需要,每一元素都可以實現為硬件元素、軟件元素或其任何組合。硬件元素 的示例可包括器件、組件、處理器、微處理器、電路、電路元件(例如,晶體管、電阻器、電容 器、感應器等等)、集成電路、專用集成電路(ASIC)、可編程邏輯器件(PLD)、數字信號處理 器(DSP)、現場可編程門陣列(FPGA)、存儲器單元、邏輯門、寄存器、半導體器件、芯片、微芯 片、芯片集等等。軟件元素的示例可包括任何軟件元素組件、程序、應用、計算機程序、應用 程序、系統程序、機器程序、操作系統軟件、中間件、固件、軟件模塊、例程、子例程、函數、方 法、接口、軟件接口、應用程序接口(API)、指令集、計算代碼、計算機代碼、代碼段、計算機代 碼段、文字、值、符號,或其任何組合。 如此處所使用的,術語“系統”、“子系統”、“組件,,和“模塊,,旨在指示計算機相關 的實體,包括硬件、硬件和軟件的組合、軟件、或執行中的軟件。例如,組件可被實現為在處 理器上運行的進程、處理器、硬盤驅動器、多個存儲驅動器(光學和/或磁存儲介質)、對象、 可執行程序、執行的線程、程序,和/或計算機。作為說明,在服務器上運行的應用程序和服 務器兩者都可以是組件。根據給定實現的需要,一個或多個組件可以駐留在進程和/或執 行的線程內,組件可以被局部化在一臺計算機上和/或分布在兩個或更多計算機之間。在 此上下文中,實施例不受限制。 在圖1中所示出的示例中,操作環境100可以包括電子郵件服務器110和檔案140 以及其他元件。盡管在圖1中示出的操作環境100具有以某種拓撲結構的有限數量的節點,但應明白,根據給定實現的需要,操作環境100可以包括以替換拓撲結構的更多或更少 的節點。在各實施例中,可以在電子郵件消息收發系統中實現電子郵件服務器110,以便通 過電子通信系統發送和接收消息。檔案140可以被實現為用于歸檔通過電子通信系統從電 子郵件消息收發系統接收到的消息的現場或場外歸檔系統或數據存儲設施。如圖所示,電 子郵件服務器110和檔案140可以經由網絡118和適當的無線或有線通信介質在通信上耦 合。電子郵件服務器110和檔案140可以通過網絡118傳遞信息且在相互之間協調操作, 這可以涉及信息的單向交換和雙向交換。網絡118可以包括分組交換網絡、電路交換網絡 或兩者的組合。通過網絡118傳遞的信息可以被實現為跨各種網絡接口發送的數據消息。 示例性網絡接口包括并行接口、串行接口和總線接口。電子郵件服務器110可用于與各種類型的消息收發客戶機通信。在一些實現中, 電子郵件服務器110可以提供用于與基于客戶機的軟件程序進行通信的接口,基于客戶機 的軟件程序例如來自華盛頓州雷蒙德市的微軟公司的MICROSOFT OFFICE OUTLOOK . 應用 程序軟件。電子郵件服務器110還可以提供用于與各種其他類型的電子郵件客戶機進行通 信的接口,各種其他類型的電子郵件客戶機包括但不限于簡單郵件傳輸協議(SMTP)客戶 機、超文本傳輸協議(HTTP)客戶機、消息收發應用程序編程接口(MAPI)客戶機、郵局協議 3 (P0P3)客戶機、因特網消息訪問協議(IMAP或IMAP4)客戶機、網絡新聞傳輸協議(NNTP) 客戶機、webmail客戶機等等。電子郵件服務器110可以用來提供web訪問、移動訪問和同步功能、因特網信息 服務(IIS)和因特網服務器應用程序編程接口(ISAPI)應用程序,因特網服務器應用程 序編程接口(ISAPI)應用程序提供SMTP、NNTP, IMAP4和P0P3服務,以允許在多種因特網 訪問協議和基于HTTP的協議上進行通信,基于HTTP的協議包括在HTTP通信上的遠程過 程調用(RPC)。在一些實現中,電子郵件服務器110可以傳送被格式化為壓縮無線二進制 XML(WbXML)數據的數據,以充分利用移動客戶機的帶寬。當由公司或其他組織使用時,除了 標準網際協議之外,電子郵件服務器110還可以支持在專有或非標準協議上進行通信。在各種實現中,根據所描述的實施例,電子郵件服務器110和/或檔案140可以執 行一種或多種協調和補救技術。在一些實施例中,電子郵件服務器110可以包括實現基于 服務器的電子郵件軟件程序的服務器計算設備。因此,在一些實施例中,一種或多種協調和 補救技術可以被實現為基于服務器的軟件程序內的特征,基于服務器的軟件程序例如來自 華盛頓州雷蒙德市的微軟公司的MICROSOFT EXCHANGE SERVER 。應明白,各實施例在該上 下文中受限,且電子郵件服務器110可以實現包括提供經由web瀏覽器的對電子郵件服務 的訪問的基于web的電子郵件應用程序在內的其他類型的應用程序、程序或服務。在一些實施例中,檔案140可以包括實現一個或多個服務器應用程序和/或web 服務的服務器計算設備。檔案140可以實現使用平臺和語言無關格式的各種web服務, 這些格式被設計成使用諸如超文本傳輸協議(HTTP)、安全套接字層上的超文本傳輸協議 (HTTPQ、簡單郵件傳輸協議(SMTP)、文件傳輸協議(FTP)等通信協議來通過諸如因特網等 網絡進行通信。因此,在一些實施例中,一種或多種協調和補救技術可以被實現為服務器應 用程序和/或web服務內的特征。應明白,各實施例在該上下文中不受限,且檔案140可以 由其他類型的現場或場外歸檔系統和/或或數據存儲設施來實現。—般地,根據所描述的實施例,電子郵件服務器110和檔案140都可以包括具有計算能力和通信能力的任何合適類型的計算設備或由這樣的計算設備實現。為實現這樣的能 力,電子郵件服務器110和檔案140可以包括各自的計算系統120、120a和通信系統130、 130a。計算系統120,120a可包括各種計算元件,諸如一個或多個處理器、協處理器、存儲器 單元、芯片集、控制器、外圍設備、接口、振蕩器、定時設備、視頻卡、音頻卡、多媒體輸入/輸 出(I/O)組件等等。通信系統130,130a可包括各種通信元件,如發射機、接收機、收發機、 無線電、網絡接口、基帶處理器、天線、放大器、濾波器等等。計算系統120、120a可以實現各自的服務器程序122、142以及其他元件。根據所描 述的實施例,服務器程序122、142和它們所包括的元件可以包括支持電子郵件服務器110 和檔案140的操作的一種或多種類型的應用程序、軟件組件、程序模塊和/或程序數據或由 其實現。在一些實現中,服務器程序122可以在一個物理服務器計算機設備上實現。或者, 各種服務器程序122可以跨越可能位于不同的域和站點以滿足地理部署要求和/或在支持 大量用戶時提供性能和容錯的多個服務器而實現。在圖1中所示出的示例中,服務器程序122可以實現一個或多個服務器角色,這些 服務器角色包括例如用來提供用于電子郵件服務器110的特定服務和特征的中樞傳輸服 務器角色1 和郵箱服務器角色126。中樞傳輸服務器角色IM可以用來處理傳入消息和 傳出消息,而郵箱服務器角色1 可以用于主存郵箱和公共文件夾數據。如圖所示,中樞傳 輸服務器角色1 可以包括日志記錄代理125,而郵箱服務器角色1 可以包括協調代理 127。根據各實施例,日志記錄代理125和協調代理127可以執行一種或多種協調和補救技 術,如下面更詳細地描述的。根據所描述的實施例,服務器程序122還可以包括其他服務器 程序128,諸如其他服務器角色和/或其他類型的服務器應用程序。在圖1所示的示例中,服務器程序142可以實現一個或多個服務器應用程序,包括 例如日志記錄應用程序144和協調應用程序146,這些應用程序用來提供用于檔案140的特 定服務和特征。根據各實施例,日志記錄應用程序146和協調應用程序146可以與日志記 錄代理125以及協調代理127進行通信,以便執行一種或多種協調和補救技術,如下面更詳 細地描述的。根據所描述的實施例,服務器程序142還可以包括其他服務器程序148,諸如 其他類型的服務器應用程序和/或web服務。根據所描述的實施例,電子郵件服務器110和檔案140可以包括用于將諸如電子 郵件消息和其他數據等項目存儲在郵箱和文件夾中的各自的數據存儲或與該數據存儲進 行通信。參見圖1,用于電子郵件服務器110的數據存儲可以由電子郵件服務器數據庫150 實現,而用于檔案140的數據存儲可以由檔案數據庫160實現。盡管出于說明的目的而被示 出為獨立元件,但應明白,在一些實施例中,電子郵件服務器數據庫150可以形成電子郵件 服務器110的一部分,和/或檔案數據庫160可以形式檔案140的一部分。還應明白,用于 電子郵件服務器110和檔案140的各自的數據存儲可以與電子郵件服務器110和檔案140 駐留在一起或駐留在其他遠程設備中。圖2提供了適于實施各實施例的計算設備200的說明性體系結構。計算設備200 可以表示例如電子郵件服務器110。如圖所示,計算設備200示出了個人或服務器計算機的 常規計算體系結構,包括包含處理器202和系統存儲器204的處理系統。系統存儲器204 可包括,除其他類型的存儲器之外,隨機存取存儲器(RAM) 206和只讀存儲器(ROM) 208。諸 如基本I/O系統(BIOS)之類的輸入/輸出(I/O)系統可以實現諸如在啟動操作期間使用存儲在ROM 208中的邏輯來幫助在計算設備200內的各元件之間傳輸信息的例程。系統總 線210可通信地耦合計算設備200的所有元件以促進信息傳輸和數據處理操作。計算設備200還可包括大容量存儲設備212,該存儲設備用于存儲諸如來自華盛 頓州雷蒙德市的微軟公司的MICROSOFT WINDOWS 操作系統或其他合適的操作系統等操作 系統214。大容量存儲設備212還可存儲如下文中更詳細地描述的各種應用程序,以及其他 程序模塊216和程序數據218。大容量存儲設備212可以通過連接到系統總線210的大容量存儲控制器(未示 出)連接到處理器202。大容量存儲設備212以及其相關聯的計算機可讀介質,為計算設 備200提供非易失性存儲器。雖然此處包含的計算機可讀介質的描述引用了諸如硬盤或 CD-ROM驅動器之類的大容量存儲設備,但是,本領域的技術人員應該了解,計算機可讀介質 可以是可以被計算設備200訪問的任何可用的介質。作為示例而非限制,計算機可讀介質 可以包括計算機存儲介質和通信介質。計算機存儲介質包括以存儲如計算機可讀指令、數 據結構、程序模塊或其他數據等信息的任何方法或技術來實現的易失性和非易失性、可移 動和不可移動介質。計算機存儲介質包括,但不限于,RAM、R0M、EPR0M、EEPR0M、閃存或其它 固態存儲器技術、CD-ROM、DVD或其它光學存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設 備、或能用于存儲所需信息且可以由計算機訪問的任何其它介質。根據各實施例,計算設備200可以通過網絡118,使用到遠程計算機的邏輯連接在 聯網環境中操作,在一些實現中,網絡118可以是諸如因特網之類的傳輸控制協議(TCP)和 網際協議(IP)網絡。計算設備200可以通過連接到系統總線210的網絡接口 220(例如, 有線或無線網絡接口)連接到網絡118。可以理解,網絡118可以包括根據所描述的實施例 的任何類型的網絡,包括,但不僅限于,廣域網(WAN)、局域網(LAN),和/或蜂窩電話網絡, 并且網絡接口 220可以支持各種傳輸層,如GPRS、CDMA IxRTT, IEEE 802. 11、藍牙 (PAN) 及用于連接到各種網絡和/或遠程計算機系統的其他。計算設備200可包括用于接收和處理來自多個輸入設備224的輸入的1/0控制器 222。用戶可以通過諸如鍵盤和定點設備(如,鼠標、跟蹤球或觸摸板)之類的各種輸入設 備224向計算設備200中輸入命令和信息。輸入設備2M的其他示例可包括話筒、游戲桿、 游戲手柄、圓盤式衛星天線、掃描儀等等。輸入設備2M可以通過耦合到系統總線210的I/ 0控制器222連接到處理器202,但是,也可以通過諸如并行端口、游戲端口或通用串行總線 (USB)之類的其他接口和總線結構來進行連接。1/0控制器222也可以提供到諸如監視器 或經由1/0控制器222連接到系統總線210的其他類型的顯示設備、打印機、揚聲器和其他 外圍設備之類的各種輸出設備224的輸出。如上文所提及的,許多程序模塊和數據文件可以存儲在計算設備200的大容量存 儲設備212和RAM 206中。在圖2所示的示例中,大容量存儲設備212和RAM206可存儲操 作系統214以及一個或多個服務器程序122,包括包含日志記錄代理125的中樞傳輸服務器 角色IM和包含協調代理127的郵箱服務器角色126。根據各實施例,協調代理127可用于 執行一種或多種協調和補救技術。例如,在一個實施例中,協調代理127可以如參考圖3所 描述的那樣實現。圖3示出適用于實踐各實施例的協調應用程序300的一個實施例。參考圖1和2, 在一些實現中,協調應用程序300可以用作作為駐留在電子郵件服務器110上的服務器程序122中的一個的協調代理127。電子郵件應用程序300的一個或多個部分還可以由計算 設備200的RAM 206或計算機軟件領域中的技術人員想到的任何其他變體中的應用程序程
序實現。如圖所示,電子郵件應用程序300可以包括消息存儲310。盡管出于說明而非限制 的目的將消息存儲310示為協調應用程序300的一部分,但應明白,根據所描述的實施例, 消息存儲310可以駐留在各個位置中。例如,消息存儲310可以駐留在電子郵件服務器110 和/或電子郵件服務器數據庫150上。作為一個非限制性示例,協調應用程序300的消息 存儲310可以以數據庫和/或以一個或多個文件駐留在計算設備200的程序數據218內。 作為另一非限制性示例,消息存儲310可以全部或部分駐留在由用戶在諸如操作系統214 之類的操作系統的文件系統中指定的目錄中。在圖3所示的示例中,消息存儲310包括一個或多個待協調消息,待協調消息可 以被分類為0代(Gen-O)消息312、1代(Gen-I)消息314、2代(Gen-2)消息316和3代 (Gen-3)消息318。在各實施例中,可以根據消息分類來發出查詢。例如,可以基于協調代 來發出查詢以便優化協調過程的性能并最小化對檔案140的查詢的數量。在一些實施例中,可以基于與檔案140相關聯的等待時間來將待協調消息分類為 Gen-O消息312。被協調應用程序300接收并被分類為Gen-O消息312的消息可以對應于 最近被發送給檔案140的消息。根據各實施例,不為待決Gen-O消息312發出查詢,且查詢 延遲直到與檔案14相關聯的等待時間已經過去。對于在特定消息被協調應用程序300接收之后的短時間間隔,特定消息的副本可 以被本地存儲在高速緩存320中并可從該高速緩存訪問。在一些實施例中,基于可以從高 速緩存320本地獲得特定消息的副本時的時間間隔,待協調消息可以被分類為Gen-I消息 314。被協調應用程序300接收并被分類為Gen-I消息314的消息可以對應于預期已經被 傳遞至檔案140和/或由檔案140處理的消息。另外,當可以從高速緩存320獲得消息的 副本時,可以實現I/O節省。在各種實現中,為Gen-I消息314發送傳遞確認查詢,且嘗試 在高速緩存320的生存期內處理幾乎所有消息。當接收到對關于特定消息的傳遞確認查詢的肯定響應時,協調應用程序300確認 消息被歸檔且可以從消息存儲310中刪除消息。當協調應用程序300接收到關于特定消息 的否定響應時,在消息存儲310中維護未經確認的消息以保證其可用性,直到可以確認該 消息被歸檔。在一些實施例中,可以基于確認此類消息的歸檔失敗來對待協調消息進行分類。 當接收到對特定消息的否定響應時,協調應用程序300可以將消息分類為Gen-2消息316。 基于解決消息延遲所需要的時間,消息可以保持被分類為Gen-2消息316。被協調應用程序 300分類為Gen-2消息316的待決消息可以對應于經歷延遲問題的未經確認的消息。根據 各實施例,不為Gen-2消息316發出查詢并且延遲查詢以允許解決郵件延遲。被協調應用程序300分類為Gen-3消息318的待決消息可以對應于具有現在可以 解決的延遲問題的未經確認的消息。協調應用程序300可以發出關于Gen-3消息218中的 一個或多個的重試查詢。當接收到對特定消息的肯定響應時,協調應用程序300可以確認 先前未經確認的消息已經被歸檔且可以從消息存儲310中刪除該消息。當接收到對重試查 詢的否定響應時,未經確認的消息保留在消息存儲310中以保證其可用性,直到可以確認
9該消 息被歸檔。當不能確認一個或多個Gen-3消息218時,協調代理127可以通過將Gen-3消息 318重新提交給檔案140來執行補救。未經確認的消息保留在消息存儲310中以保證其可 用性,直到確認特定消息被歸檔。協調應用程序300可以將未經確認的Gen-3消息318重 新提交給檔案140,且可以將每一未經確認的消息的副本保存在消息存儲310中。在特定的 未經確認的消息被重新提交給檔案140后,協調過程可以再次開始直到確認該特定消息被 歸檔。應明白,即使是在特定消息不能被協調時,消息也保留在消息存儲310中以保證其可 用性。如圖所示,電子郵件應用程序300可以包括負責執行在此所描述的協調和補救技 術中的部分或全部的協調和補救邏輯330。在圖3所示的示例中,協調和補救邏輯330包括 用于接收要協調的消息的邏輯332、用于對待協調消息進行分類的邏輯334,用于發出檔案 查詢的邏輯336,用于確認已歸檔消息的邏輯338、用于刪除經確認的消息的邏輯340以及 用于補救未經確認的消息的邏輯342。在一些實現中,協調和補救邏輯330可以作為電子郵件服務器110上的協調代理 127的一部分來駐留在協調應用程序300內。然而,應明白,根據所描述的實施例,協調和補 救邏輯330可以另選地或另外地被具體化為存儲在各種位置中的一種或多種類型的計算 機可讀存儲介質上的計算機可執行指令。盡管圖3所示的示例包括特定邏輯集,但應明白,協調和補救邏輯330提供一般功 能的示例性實現。可以理解,邏輯的序列不一定必須按呈現的順序執行,除非另有陳述。此 夕卜,盡管協調和補救邏輯330可以被描述為執行特定步驟序列,但是,根據替換實施例,還 可執行其他步驟序列。此外,由協調和補救邏輯330所執行的某些個體步驟可包括多個子 步驟,這些子步驟可以對個體步驟合適的各種序列執行。此外,取決于特定實現,還可以執 行額外的步驟,或者某些步驟可以被協調和補救邏輯330省略。圖4示出例示適用于實施各實施例的各代協調的圖400的一個實施例。參考圖 1-圖3,在一些實現中,待協調消息可以被協調應用程序300分類成各代協調,協調應用程 序300又可以由駐留在電子郵件服務器110上的協調代理127實現。然而,各實施例不限 于這樣的實現。此外,應明白,根據所描述的實施例,術語分類或代(和它們的派生詞)可 以是指任何合適的技術或消息組。盡管當指代消息的分類或消息組時一些操作系統或應用 程序可以不使用術語分類或代,但這樣場景旨在被所描述的實施例涵蓋。如圖所示,根據對應的時間間隔(T0-T3),待協調消息可以被分類為0代(Gen-O)、 1代(Gen-I)、2代(Gen-2)和3代(Gen-3)消息。在此示例中,當與消息相關聯的時間在時 間間隔TO內時,消息可以被分類為Gen-O消息,當該時間在時間間隔Tl內時,消息可以被 分類為Gen-I消息,當該時間在時間間隔Tl內時,消息可以被分類為Gen-2消息,當該時間 在T3期間時,消息可以被分類為Gen-3消息。盡管一些實施例可以描述與時間間隔相關聯 的特定示例性值(T0-T3),但應理解,可以使用其他合適的值。還應明白,根據所描述的實施 例,可以按其他方式對消息進行分類。在各個實現中,與特定消息相關聯的時間可以對應于自從接收到包括該特定消息 在內的日志報告的副本以來過去的時間量。例如,與特定消息相關聯的時間可以是協調代 理127接收到包含該特定消息的日志報告的副本的時間,和/或可以是該特定消息被存儲在消息存儲310中的時間。在其他實施例中,與該消息相關聯的時間可以基于可以在曰志 報告的副本中提供的消息被發送給檔案140的時間。在協調代理127接收到在日志報告的副本中的特定消息之后,需要較短時間間隔 來將原始的日志報告傳遞給檔案140和/或由檔案140處理該報告。因此,在一些實施例 中,可以基于諸如與檔案140相關聯的傳遞和/或處理等待時間等等待時間來對待協調消 息進行分類。在圖4所示的示例中,當與消息相關聯的時間是在時間間隔TO內時,消息可以被 分類為Gen-O消息。如圖所示,時間間隔TO的長度可以對應于原始日志報告被傳遞給檔案 140的預期水平協議(SLA)或等待時間(ASLA)。一般地,時間間隔Δ SLA將是相對較短的 時間段,例如約5秒。根據各實施例,時間間隔△ SLA可以基于被發送給檔案140的消息的傳 遞和/或 處理等待時間。在一些實施例中,時間間隔Δ SLA可以是大多數日志報告被傳遞給檔案140 所需要的假定的或觀察到的時間量。時間間隔ASLA還可以由廠商SLA定義,該廠商SLA 指定檔案140約定的服務水平和/或執行時間。在一些情況下,時間間隔Δ SLA可以基于 由檔案140提供的信息。例如,在一些實現中,協調代理127可以查詢檔案140以獲得某些 配置信息,諸如用于處理消息的預期SLA或等待時間。如圖所示,時間間隔TO可以對應于Δ SLA且在Δ SLA過去后結束。在各種實現中, 在時間間隔TO期間,且直到ASLA從與該消息相關聯的時間起已經過去,特定消息可以被 分類為Gen-O消息,該時間諸如包含特定消息的日志報告的副本被協調代理127接收的時 間和/或消息被存儲在消息存儲310中的時間。因此,被協調代理127接收到且被分類為 Gen-O的消息可以對應于最近被發送給檔案140的消息。對于在特定消息被協調代理127接收到之后的較短時間間隔,要協調的消息的副 本可以被本地存儲在高速緩存320中且從高速緩存320訪問。因此,在一些實施例中,可以 基于此時間間隔或與高速緩存320相關聯的高速緩存生存期(△高速緩存)來對待協調消 息進行分類。一般地,高速緩存生存期Δ高速緩存將是,且在某些情況下必須是比預期等 待時間Δ SLA長。在一些實施例中,高速緩存生存期Δ高速緩存可以是約10秒。高速緩存生存期Δ高速緩存一般將與系統上可用的RAM諸如RAM 206成正比地 變化。例如,在具有10分鐘的高速緩存生存期△高速緩存的電子郵件服務器110上,高速 緩存生存期Δ高速緩存通常可以通過使RAM翻倍來翻倍。因此,Δ高速緩存時間間隔通 常比往往是大約5秒且相對難以改變的諸如時間間隔ASLA等其他時間間隔中的大多數易 變得多。由于其與RAM的線性關系,可以通過在運行協調代理127的服務器上添加RAM來 容易地增加高速緩存生存期△高速緩存。這允許高速緩存生存期△高速緩存在需要時寬 裕地超過SLA時間間隔并且產生I/O節省。在圖4所示的示例中,當與消息相關聯的時間在時間間隔Tl內時,消息可以被分 類為Gen-I消息。如圖所示,時間間隔Tl的長度可以對應于Δ SLA期滿之后且高速緩存生 存期△高速緩存期滿之前的時間窗口。在各種實現中,在時間間隔Tl期間且直到自從與 消息相關聯的時間起已經過去高速緩存生存期△高速緩存,特定消息可以被分類為Gen-I 消息,該與消息相關聯的時間諸如當包含特定消息的日志報告的副本被協調代理127接收 和/或當該消息被存儲在消息存儲310中的時間。因此,被協調代理127接收且被分類為Gen-I的消息可以對應于預期已經被傳遞給檔案140和/或由檔案140處理的消息。在各實施例中,可以根據消息分類來發出查詢。例如,可以基于協調世代來發出查詢以優化協調過程的性能并最小化對檔案140的查詢的數量。被協調代理127接收并被分類為Gen-O的消息可以對應于最近被發送給檔案140 的消息。根據各實施例,協調代理127不發出關于被分類為Gen-O的待決消息的查詢。例 如,如果在八SLA已經過去之前將關于日志報告的部署的查詢發送給檔案140,則該查詢將 很有可能得到否定響應(Nak)。因此,不為TO期間的Gen-O消息執行查詢發出,且可以延遲 查詢的發出直到Δ SLA期滿。被協調代理127接收并被分類為Gen-I的消息對應于預期被存儲在檔案140中的 消息。另外,在可以從高速緩存320獲得消息的副本時,可以實現I/O節省。然而,在高速緩 存生存期(△高速緩存)期滿之后,消息的副本可以從高速緩存320里掉出,且I/O節省不 再可能。在各實施例中,發送關于分類為Gen-I的待決消息的初始查詢。在這樣的實施例 中,協調代理127可以在時間間隔Tl期間嘗試處理幾乎所有消息,這可以基于并延伸至高 速緩存生存期△高速緩存的期滿高速緩存。因此,協調過程的性能自從協調代理127發出 關于預期被存儲在檔案140中的消息的查詢依賴可以進行優化且可以通過從高速緩存320 訪問消息實現I/O節省。在時間間隔Tl期間,協調代理127可以聯系檔案140的協調應用程序146并發出 包括一個或多個Gen-I消息的消息ID在內的初始查詢。初始查詢可由檔案140經由協調 應用程序146接收,且可以確定查詢中所標識的每一個消息是否已經被接收并由檔案140 完全存儲。在確定查詢中所標識的所有消息被完全存儲之后,檔案140可以經由協調應用 程序146用指示每一消息均被存儲的肯定響應(Ack)來響應。當接收到對特定消息的肯定 響應之后,協調代理127確認消息被歸檔且可以從本地消息存儲310刪除該消息。然而,在某些情況下,可以確定在查詢中標識的消息中的一個或多個未被檔案140 存儲。例如,檔案140在接收到查詢時可能沒有接收到特定消息。在這樣的情況下,檔案140 可以經由協調應用程序146用標識未被存儲的消息的否定響應(Nak)來響應。因為由協 調代理127發出的初始傳遞確認查詢針對預期被存儲在檔案140中的消息,所以接收到否 定響應可以指示典型的消息傳遞和處理延遲或更嚴重的問題。當協調代理127從檔案140 接收到關于特定消息的否定響應時,在消息存儲310中維護未經確認的消息以保證其可用 性,直到可以確認該消息被歸檔。當接收到關于特定消息的否定響應時,協調代理127可以將消息分類為Gen-2。因 此,在一些實施例中,可以基于不能確認這樣的消息的歸檔來對待協調消息進行分類。如果 不能確認消息的歸檔,則可能是正在經歷典型的消息傳遞和處理延遲且需要額外的時間來 允許解決延遲的情況。在圖4所示的示例中,當與消息相關聯的時間在時間間隔T2內時,該消息可以被 分類為Gen-2消息。如圖所示,時間間隔T2的長度可以對應于問題解決SLA( △問題解決) 時間間隔。根據各實施例,時間間隔Δ問題解決可以基于解決消息延遲所需要的時間。例 如,時間間隔△問題解決可以是按正常過程通過自動修正和/或通過手動干預解決引起延 遲的問題來解決大多數消息延遲問題所耗費的假設的或觀察到的時間量。一般地,時間間 隔Δ問題解決將是相對較長的時間段,例如約5小時。
可以基于用于解決消息延遲的時間間隔來對待協調消息進行分類。應明白,理想 地,將消息分類為Gen-2或Gen-3很少出現。在各種實現中,在時間間隔T2期間且直到時 間間隔Δ問題解決已經過去,特定消息可以被分類為Gen-2消息,且然后被分類為Gen-3。 例如,特定的未經確認的消息可以被分類為Gen-2,直到從協調代理127接收到包含特定的 未經確認的消息的日志報告的副本和/或未經確認的消息最初被存儲在消息存儲310中的 時間起已經過去時間間隔(△高速緩存+ △問題解決)。或者,特定的未經確認的消息可以 被分類為Gen-2,直到從發送關于特定的未經確認的消息的初始傳遞確認查詢的時間起已 經過去時間間隔Δ問題解決。 被協調代理127分類為Gen-2的待決消息可以對應于經歷延遲問題的未經確認的 消息。根據各實施例,協調代理127不發出關于被分類為Gen-2的待決消息的查詢。例如, 如果在已經過去Δ問題解決之前發送關于日志報告的部署的重試查詢,則該查詢將很可 能得到另一否定響應(Nak)。因此,不為T2期間的Gen-2消息執行查詢發出,且可以延遲該 查詢發出直到Δ問題解決期滿。在各實施例中,被分類為Gen-3消息的消息可以包括比T0+T1+T2更老的消息。在 一些實施例中,例如,被分類為Gen-3的消息跨越在當前時間之前的時間間隔(△高速緩存 + Δ問題解決)之前提交的所有消息。被協調代理127分類為Gen-3的待決消息可以對應 于具有現在可以解決的延遲問題的未經確認的消息。在允許時間間隔Δ問題解決過去以解決郵件延遲之后,協調代理127可以發出關 于被分類為Gen-3的一個或多個未經確認的消息的重試查詢。在時間間隔T3期間,例如,協 調代理127可以聯系檔案140的協調應用程序146并發出包括一個或多個Gen-3消息的消 息ID在內的重試查詢。在一些實施例中,協調代理127可以周期性地發出關于待決Gen-3 消息中的部分或全部的重試查詢。例如,協調代理127可以每隔24小時就聯系檔案140的 協調應用程序146,并發出包括先前在當前時間之前的時間間隔(△高速緩存+△問題解 決)之前提交的所有Gen-3消息的消息ID在內的重試查詢。重試查詢可由檔案140經由協調應用程序146接收,且可以確定在重試查詢中標 識的每一個消息現在是否已經被檔案140接收并完全地存儲。如果確定在重試查詢中標識 的所有Gen-3消息都被完全存儲,則檔案140可以經由協調應用程序146用指示每一消息 均被存儲的肯定響應(Ack)來響應。當接收到對特定消息的肯定響應時,協調代理127可 以確認先前未經確認的消息已經被歸檔且可以從本地消息存儲310刪除該消息。然而,如果確定在重試查詢中標識的消息中的一個或多個未被存儲,則檔案140 可以經由協調應用程序146用標識未被存儲的消息的否定響應(Nak)來響應。當協調代理 127從檔案140接收到關于特定消息的否定響應時,在消息存儲310中維護未經確認的消息 以保證其可用性,直到可以確認該消息被歸檔。在一些實施例中,當接收到對關于Gen-3消息的重試查詢的否定響應時,協調代 理127可以確定是否已經達到最大等待時間閾值。如果還沒有達到最大等待時間閾值,則 協調可以周期性地聯系檔案140的協調應用程序146并發出對未經確認的消息的進一步的 重試查詢,直到達到最大等待時間閾值。在其他實施例中,當接收到對關于Gen-3消息的重試查詢的否定響應時協調代理 127可以確定是否已經達到最大重試嘗試次數。如果沒有達到最大重試嘗試次數,則協調可以周期性地聯系檔案140的協調應用程序146并發出對未經確認的消息的進一步的重試查詢,直到達到最大嘗試次數。當不能確認消息時,協調代理127可以通過將未經確認的消息重新提交給檔案 140來執行對未經確認的消息的補救。在一些實施例中,當已經達到最大等待時間或最大重 試嘗試次數時,協調代理127可以執行對未經確認的消息的補救。在其他實施例中,可以不 存在最大等待時間或最大重試嘗試次數,且協調代理127可以在單次重試嘗試失敗后開始 補救。例如,如果對Gen-3消息的第一重試嘗試失敗,則協調代理127可以在接收到來自檔 案140的否定響應之后立即補救消息。直到確認特定消息被歸檔,未經確認的消息保留在消息存儲310中以保證其可用 性。根據各實施例,協調代理127可以將未經確認的消息重新提交給檔案140,并將未經確 認的消息的副本保存在消息存儲310中。在未經確認的消息被重新提交給檔案140之后, 協調過程可以再次開始,直到確認該特定消息被歸檔。如果在若干重新提交嘗試之后不能協調特定消息,則需要干預。根據各實施例, 在補救失敗諸如特定數量的重新提交嘗試失敗之后,協調代理127可以生成和發送警告警 告。例如,如果在若干重新提交嘗試之后協調失敗,則可以給生成電子郵件系統的管理員發 送告知管理員該問題以及需要手動過程來解決該問題的警告。應明白,即使是在特定消息 不能被協調時,消息仍保留在消息存儲310中以保證其可用性。圖5示出適用于實施各實施例的消息流500的一個實施例。如圖所示,消息流500 可以涉及在電子郵件服務器Iio和檔案140之間交換消息501-509。在一些實現中,日志 記錄代理125、協調代理127、日志記錄應用程序144和協調應用程序146發送和接收消息 501-509,如以上所描述的。然而,各實施例不限于這樣的實現。此外,盡管圖所示的示例包 括特定消息集,但應明白,消息流500提供一般功能的示例性實現。應理解,可以包括替換 或附加消息,且取決于特定實現可以省略一些消息。如圖所示,電子郵件服務器110經由日志記錄代理125,將日志報告501發送給檔 案140。在各種實現中,可以基于日志記錄條件集來創建日志報告501。例如,當電子郵件 消息被電子郵件服務器110發送給接收者時,日志記錄代理125可以確定電子郵件消息是 否滿足日志記錄的條件。如果滿足這些條件且要應用日志記錄,則日志記錄代理125將電 子郵件消息打包為日志報告501。日志報告501可以包括,例如滿足檔案140的日志記錄條件的電子郵件消息的副 本以及包括消息的消息ID、接收者身份和消息的其他傳輸數據的元數據。電子郵件服務器 110將電子郵件消息發送給接收者并經由經由日志記錄代理125將日志報告501發送給檔 案140。可以例如通過SMTP經由電子郵件將日志報告501發送給檔案140。根據各實施例,當日志報告501被創建時,日志記錄代理125還將日志報告的副本 502發送給協調代理127以便存儲在本地郵箱或保存區,諸如消息存儲310中。日志報告的 副本502包括要協調的消息,其可以包括被發送給接收者并被發送給檔案140的相同消息 的副本。日志報告的副本502還可以包含包括消息的消息ID、接收者身份和消息的其他傳 輸數據元數據的元數據。如上所述,在一些實現中,保存區中的待協調消息可以被分類成多代協調。根據各 實施例,待協調消息可基于與檔案140相關聯的等待時間、在可以從高速緩存320中本地地獲得要協調的消息的副本時、確認消息歸檔失敗、用于解決消息延遲的時間間隔或以其他 方式來進行分類。在這樣的實現中,可以根據消息分類來發出查詢以便優化協調過程的性 能并最小化對檔案140的查詢的數量。 在圖5所示的示例中,協調代理127可以聯系檔案140的協調應用程序146并發 送配置查詢503。在各種實現中,配置查詢503可以包括向檔案140請求諸如處理消息的預 期SLA或等待時間等特定配置信息的web服務查詢。檔案140可以經由協調應用程序146 接收配置查詢503。檔案140經由協調應用程序146用包括所請求的配置信息的配置響應 504來響應配置查詢503。如圖所示,電子郵件服務器110可以經由協調代理127向協調應用程序146發出 一個或多個查詢,以保證特定消息到達并存儲在檔案140處。在各實施例中,協調代理127 可以執行異步協調過程,該異步協調過程用于聯系檔案140、詢問被發送給檔案140的消息 是否已經被完全保存以及確認消息在檔案140中的存儲。如果檔案140不能確認給定消息 的存儲,則協調代理127可以在稍后時刻再次執行詢問檔案140的一系列步驟。即使檔案 140從不確認存儲,協調代理127也將維護消息的本地副本,以供查看、打印、保存等等。在圖5所示的示例中,協調代理127可以聯系檔案140的協調應用程序146和發 送傳遞確認查詢505。在各種實現中,在ASLA期滿之后在時間間隔Tl期間,可以發送傳遞 確認查詢505。傳遞確認查詢505可以包括,例如一個或多個Gen-I消息的消息ID。由協 調代理127接收并被分類為Gen-I的消息可以對應于預期被存儲在檔案140中的消息。另 夕卜,消息的副本可以從高速緩存320中獲得,以實現I/O節省。傳遞確認查詢505可以由檔案140經由協調應用程序146接收,且可以確定傳遞 確認查詢505中標識的每一個消息是否已經由檔案140接收并完全存儲。基于該確定,檔 案140經由協調應用程序146用傳遞確認查詢響應506來響應傳遞確認查詢505。在各種 實現中,傳遞確認查詢響應506可以在時間間隔Tl期間發送并包括一個或多個Gen-I消息 的消息ID。如果確定傳遞確認查詢505中標識的所有消息被完全存儲,則檔案140可以經由 協調應用程序146用包括指示每一個消息都已被存儲的肯定響應(Ack)的傳遞確認查詢響 應506來響應。當傳遞確認查詢響應506包括肯定響應時,協調代理127確認消息被歸檔 且可以從本地消息存儲310刪除該消息。如果確定傳遞確認查詢505中標識的消息中的一個或多個沒有被檔案140存儲, 則檔案140可以經由協調應用程序146用包括標識未被存儲的消息的否定響應(Nak)的傳 遞確認查詢響應506來響應。當協調代理127接收到包括否定響應的傳遞確認查詢響應 506時,在消息存儲310中維護未經確認的消息以保證可用性,直到可以確認消息被歸檔。當一個或多個消息未被確認時,協調代理127可以聯系檔案140的協調應用程序 146并發送重試查詢507。在各種實現中,可以在允許用于解決郵件延遲的時間間隔Δ問 題解決過去之后的時間間隔Τ3期間發送重試查詢507。重試查詢507可以包括一個或多個 Gen-3消息的消息ID。由協調代理127分類為Gen-3的待決消息可以對應于具有現在可以 解決的延遲問題的未經確認的消息。重試查詢507可以由檔案140經由協調應用程序146接收,且可以確定重試查詢 507中標識的每一個消息是否已經由檔案140接收并完全存儲。基于該確定,檔案140經由協調應用程序146用重試查詢響應508來響應重試查詢507。在各種實現中,重試響應508 可以在時間間隔T3期間發送并包括一個或多個Gen-3消息的消息ID。
如果確定重試查詢507中標識的所有消息已被完全存儲,則檔案140可以經由協 調應用程序146用包括指示每一消息被存儲的肯定響應(Ack)的傳遞確認查詢響應508來 響應。當重試查詢響應508包括肯定響應時,協調代理127確認消息被歸檔和可以從本地 消息存儲310刪除該消息。如果確定重試查詢507中標識的消息中的一個或多個沒有被檔案140存儲,則檔 案140可以經由協調應用程序146用包括標識沒有被存儲的消息的否定響應(Nak)的重試 查詢響應508來響應。當協調代理127接收到包括否定響應的重試查詢響應508時,在消 息存儲310中維護未經確認的消息以保證可用性,直到可以確認消息被歸檔。在一些實施例中,當接收到包括否定響應的重試查詢響應508時,協調代理127可 以發出進一步的重試查詢,直到達到最大的等待時間閾值和/或最大嘗試次數。在其他實 施例中,在單次重試嘗試失敗時,協調代理127就可以立即開始補救。當消息不能被確認時,通過將消息重新提交給檔案140,協調代理127可以執行對 未經確認的消息的補救。如圖所示,在一些實施例中,通過將重新提交消息509發送給日志 記錄應用程序144,協調代理127可以執行對未經確認的消息的補救。在其他實施例中,通 過將重新提交消息509發送給日志記錄代理125以便重新提交給檔案140,協調代理127可 以執行對未經確認的消息的補救。重新提交消息509可以包括未經確認的消息的副本且可以通過例如SMTP作為日 志報告電子郵件消息被發送給檔案140。在各種實現中,發送重新提交消息509重演被發送 給檔案140的原始日志報告501。協調代理127還將未經確認的消息的副本保存在消息存 儲310中。在重新提交消息509被發送之后,協調過程可以再次開始,直到確認特定消息被 歸檔。如果在若干重新提交嘗試之后,特定消息不能被協調,則協調代理127可以生成警告
并將警告發送給管理員。根據各實施例,根據用于在電子郵件服務器110和檔案140之間通信的協調協議, 消息流500可以涉及一個或多個消息的交換。使用web服務協議和web服務模式,協調協議 可以例如被實現為web服務。在一些實施例中,協調協議可以被實現為根據簡單的對象訪 問協議(SOAP)通信協議和應用程序之間的通信過程來傳遞XML文檔。當被實現為web服務 時,協調協議可以使用各種平臺和語言無關格式,這些格式被設計成根據諸如HTTP、HTTPS、 SMTP、FTP等通信協議通過諸如因特網等計算機網絡來進行通信。應明白,協調協議可以有 利地被實現為web服務,這是由于防火墻通常允許HTTP通信并且許多檔案已經提供HTTP 前端以允許管理員登陸歸檔內容并對其執行搜索。在一些實施例中,協調協議的查詢和響應消息可以包括被實現為XML文檔的web 服務查詢和響應。查詢和響應XML文檔可以使用XML架構和諸如XML命名空間(xmlns)、 XML架構實例(xsi)、XML架構定義(xsd)擴展文件名等屬性來實現。在一些實現中,查詢和 響應XML文檔可以包括SOAP消息,SOAP消息包括SOAP包封和包含調用和響應信息的SOAP 正文。以下示出根據web服務協調協議實現的配置查詢503和配置響應504的一個非限制性示例。在此示例中,配置查詢503正在詢問以獲得特定配置信息,諸如用于處理消息的 預期SLA或等待時間。查詢
< ? xml version = “ 1.0〃 encoding = “ utf-8 “ ? ><soap Envelope xmlns xsi = “ http://www.w3.org/2001/ XMLSchema-instance“xmlns :xsd = ‘‘ http //www. w3. org/2001/XMLSchema"xmlns:soap = " http://schemas.xmlsoap.org/soap/envelope/" ><soap:Body>〈Configuration xmlns =" http://localhost/reconcile" ><IgnoredParameter xmlns =" " />〈/Configuration〉</soap:Body></soap:Envelope)響應SLA是“O年O月O天O小時10分鐘O秒”所支持的版本是1.0和1.5< ? xml version = ” 1.0〃 encoding = ” utf-8” ? ><soap Envelope xmlns xsi = “ http://www.w3.org/2001/ XMLSchema-instance“xmlns :xsd = ‘‘ http //www. w3. org/2001/XMLSchema"xmlns: soap = " http://schemas.xmlsoap.org/soap/envelope/" ><soap:Body><ConfigurationResponse xmlns = " http://localhost/ reconcile" >〈Configuration xmlns = 〃 〃 ><Sla>P0Y0M0DT0H10M0S</Sla><SupportedVersions>〈Version〉<MajorVersion>l</MajorVersion><MinorVersion>0</MinorVersion>〈/Version〉〈Version〉<MajorVersion>l</MajorVersion><MinorVersion>5</MinorVersion>〈/Version〉</SupportedVersions>〈/Configuration〉</ConfigurationResponse)
〈/soap: Body〉</soap: Envelope) 以下示出根據web服務協調協議實現的傳遞確認查詢505和傳遞確認響應506的 一個非限制性示例。在此示例中,傳遞確認查詢505正在向檔案帳戶bank_customer@ehs. com詢問已發送所示次數的兩個消息的狀態(‘V后綴指示XML架構的UTC)。查詢< ? xml version = “ 1.0〃 encoding = “ utf-8 “ ? ><soap Envelope xmlns xsi = “ http://www.w3.org/2001/ XMLSchema-instance“xmlns :xsd = ‘‘ http //www. w3. org/2001/XMLSchema"xmlns:soap = " http://schemas.xmlsoap.org/soap/envelope/" ><soap:Body><ConfirmDe 1 ivery xmlns=" http://localhost/reconcile" >〈Account xmlns="" ><EmailAddress>bank_customeriehs. com</EmailAddress>〈/Account〉〈MessageldList xmlns="" ><MessageIdSentTime = " 2008-09-01T09:00:OOZ " >12345ijournal. report. messageicK/ Messageld><MessageIdSentTime = " 2008-09-01T09:01:OOZ〃 >67890ijournal. report. messageicK/ Messageld>〈/MessageldList〉</ConfirmDelivery>〈/soap: Body〉</soap: Envelope)響應對于第一消息,消息等待時間為9分15秒,而對于第二消息,消息等待時間為8分 12秒。< ? xml version = “ 1.0〃 encoding = “ utf-8 “ ? ><soap Envelope xmlns:xsi = “ http://www.w3.org/200 1/ XMLSchema-instance“xmlns :xsd = ‘‘ http //www. w3. org/2001/XMLSchema"xmlns:soap = " http://schemas.xmlsoap.org/soap/envelope/" ><soap:Body><ConfirmDeIiveryResponse xmlns = " http://localhost/ reconcile" >〈MessageldList xmlns="" >
<MessageIdLatency = “ P0Y0M0DT0H9M15S “ >12345ijournal. report. messageicK/ Messageld><MessageIdLatency = “ P0Y0M0DT0H8M12S “ >67890ijournal. report. messageicK/ Messageld></MessageIdList></ConfirmDeliveryResponse>〈/soap: Body〉</soap: Envelope)可以理解,盡管一些實施例可以被描述為根據web服務協議來實現協調協議,但 是可以使用其他協議,包括但不限于,遠程過程調用(RPC)協議、電子郵件消息收發協議、 諸如傳輸控制協議(TCP)等網際協議、代表性狀態傳輸(REST)協議、諸如真正簡單聚合 (RSS)等web饋源協議、和/或任何其他合適的同步或異步協議。可以參考一個或多個邏輯流程進一步描述上文所描述的實施例的操作。可以理 解,代表性的邏輯流程不一定必須按呈現的順序執行,或按任何特定順序執行,除非另有陳 述。此外,參考邏輯流程所描述的各種活動可以串行地或并行地執行。邏輯流程可以根據 給定一組設計和性能約束的需要,使用所描述的各實施例一個或多個硬件元素和/或軟件 元素,或替換的元素來實現。例如,邏輯流程可以實現為由邏輯設備(例如,通用或特定用 途計算機)執行的邏輯(例如,計算機程序指令)。圖6示出了適于實施各實施例的邏輯流程600的一個實施例。邏輯流程600可以 代表由此處所描述的一個或多個實施例執行的某些或全部操作。如圖所示,邏輯流程600可以包括接收要協調的消息(框610)。在各種實現中,要協調的消息可以對應于由電子郵件服務器110發送給檔案140以供存儲的消息。在一些實 現中,例如,要協調的消息可以包括被發送給檔案140以供存儲的消息的副本。要協調的消 息可以在日志報告502的副本中接收,日志報告502對應于由電子郵件服務器110發送給 檔案140的日志報告501。日志報告502的副本可以包括被發送給接受者并被發送給檔案 140以供存儲的相同消息的副本。邏輯流程600可以包括對所接收的要協調的消息進行分類(框620)。在各實施例 中,要協調的消息可以基于一個或多個時間間隔來分類,諸如對應于與檔案相關聯的等待 時間的時間間隔、可以在本地高速緩存320中獲得要協調的消息的副本的時間間隔和用于 解決延遲問題的時間間隔。要協調的消息還可以基于接收到對傳遞確認查詢的否定響應來 分類。邏輯流程600可以包括根據要協調的消息的分類來向檔案發出的傳遞確認查詢 (框630)。在各實施例中,傳遞確認查詢可以基于檔案140的等待時間來延遲。在一些實 現中,傳遞確認查詢可以根據web服務協議被發送給檔案140。邏輯流程600可以包括確認被發送給服務器的消息的歸檔(框640)。在各實施 例中,要協調的消息被存儲在諸如消息存儲310等保存區中,直到確認發送給檔案140的消 息被存儲。在確認消息被存儲在檔案140中之后,可以從消息存儲310中刪除要協調的消息。如果接收到對傳遞確 認查詢的否定響應,則可以向檔案140發送重試查詢,直到達到最 大等待時間和/或最大嘗試次數。邏輯流程600可以包括補救未經確認的消息(框650)。在各實施例中,在接收到 對重試查詢的否定響應之后,可將要協調的消息重新提交給檔案。在未經確認的消息被重 新提交給檔案140之后,協調過程可以再次開始,直到確認特定消息被歸檔。應明白,即使 在無法確認特定消息時,消息也保留在消息存儲310中以保證其可用性。可以理解,盡管邏輯流程600可以被描述為執行特定步驟序列,但是,根據替換實 施例,還可執行其他步驟序列。此外,由邏輯流程600的某些單獨步驟可包括多個子步驟, 這些子步驟可以按對單獨步驟合適的各種順序執行。此外,取決于特定實現,可以添加附加 步驟或者可以移除某些步驟。圖7示出了適于存儲各實施例的邏輯的制品700的示圖。如圖所示,制品700可 以包括用于存儲邏輯704的存儲介質702。存儲介質702的示例可包括能夠存儲電子數據 的一種或多種類型的計算機可讀存儲介質,包括易失性存儲器或非易失性存儲器,可移動 或不可移動存儲器,可擦除或不可擦存儲器,可寫入或可重寫的存儲器等等。邏輯704的示 例可包括各種軟件元素,如軟件組件、程序、應用、計算機程序、應用程序、系統程序、機器程 序、操作系統軟件、中間件、固件、軟件模塊、例程、子例程、函數、方法、過程、軟件接口、應用 程序接口(API)、指令集、計算代碼、計算機代碼、代碼段、計算機代碼段、文字、值、符號,或 其任何組合。在一個實施例中,例如,制品700和/或計算機可讀存儲介質702可以存儲包括可 執行計算機程序指令的邏輯704,當由計算機執行所述指令時,所述指令使計算機執行根據 所描述的實施例的方法和/或操作。計算機的示例可包括具有根據所述實施例的計算能力 和/或通信能力的任何合適的計算設備。示例性計算設備可包括但不限于,移動設備、個 人數字助理、移動計算設備、智能電話、蜂窩電話、手機、單向尋呼機、雙向尋呼機、消息通信 設備、計算機、個人計算機(PC)、臺式計算機、膝上型計算機、筆記本計算機、手持式計算機、 服務器、服務器陣列或服務器場、web服務器、網絡服務器、因特網服務器、工作站、小型計算 機、大型計算機、超級計算機、網絡設備、web設備、分布式計算系統、多處理器系統、基于處 理器的系統、消費電子產品、可編程消費電子產品、電視機、數字電視機、機頂盒、無線接入 點、基站、用戶站、移動用戶中心、無線電網絡控制器、路由器、集線器、網關、網橋、交換機、 機器、或其組合。可執行的計算機程序指令可包括任何合適類型的代碼,如源代碼、已編譯的代碼、 已解釋的代碼、可執行代碼、靜態代碼、動態代碼等等。可執行計算機程序指令可以根據預 定義的計算機語言、方式或語法來實現,以便指令計算機來執行某一功能。指令可以使用任 何合適的高級、低級、面向對象、可視、已編譯和/或解釋性編程語言,諸如c#、c、c++、java、 BASIC、Perl、Matlab、Pascal、Visual BASIC、匯編語言,及其他語言來實現。各實施例可以使用硬件元素、軟件元素或兩者的組合來實現。硬件元素的示例可 包括如前面為邏輯設備提供的示例中的任何一個,并且還包括微處理器、電路、電路元件 (例如,晶體管、電阻器、電容器、感應器等等)、集成電路、邏輯門、寄存器、半導體器件、芯 片、微芯片、芯片集等等。軟件元素的示例可包括軟件組件、程序、應用、計算機程序、應用程 序、系統程序、機器程序、操作系統軟件、中間件、固件、軟件模塊、例程、子例程、函數、方法、過程、軟件接口、應用程序接口(API)、指令集、計算代碼、計算機代碼、代碼段、計算機代碼 段、文字、值、符號,或其任何組合。確定一個實施例是否使用硬件元素和/或軟件元素來實 現可以根據諸如根據給定實現所需的任意數量的因素而不同,諸如所希望的計算速率、功 率水平、耐熱性、處理周期預算、輸入數據速率、輸出數據速率、存儲器資源、數據總線速度, 及其他設計或性能約束。可以使用表達“耦合”和“連接”以及它們的派生詞來描述某些實施例。這些術語 不一定作為彼此的同義詞。例如,一些實施例可使用術語“連接的”和/或“耦合的”來描 述以指示兩個或更多元件彼此有直接的物理或電接觸。然而,術語“耦合的”還可以意味著 兩個或更多元件彼此不直接接觸,而仍彼此合作或交互。要強調的是,提供了本公開的摘要以符合37C.F.R. 1.72(b)節,該節要求使讀者 能快速確定本技術公開的特性的摘要。但應理解,它不能被用來解釋或限制權利要求的范 圍或含義。此外,在前面的“具體實施方式
”中,可以看出,各種特點可以編組到一個實施例 中,以便簡化說明。本公開的此方法不應被解釋為反映所要求保護的各實施例需要比每一 個權利要求中明確地記載的特征更多的特征的意圖。相反,如下面的權利要求所反映的,本 發明的主題在于少于單個所公開的實施例的所有特征。如此,下面的權利要求被包括到“具 體實施方式”,且每一個權利要求本身也作為單獨的實施例。在所附權利要求書中,術語“包 括(including)”和“其中(其中)”被分別用作相應的術語“包括(comprising)”和“其中 (wherein)”的普通英語等效詞。此 外,術語“第一”、“第二”、“第三”等等只用作標記,并不 旨在對它們的對象施加數值要求。盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權 利要求書中定義的主題不必限于上述具體特征或動作。相反,上述具體特征和動作是作為 實現權利要求的示例形式公開的。
權利要求
1.一種方法,所述方法包括接收(610)要協調的消息,所述要協調的消息對應于由服務器(110)發送給檔案(140) 以供存儲的消息;對所接收的要協調的消息進行分類(620);根據所述要協調的消息的分類來向所述檔案發出(630)傳遞確認查詢;以及基于對所述傳遞確認查詢的響應來確認(640)從所述服務器發送到所述檔案的消息 是否被存儲在所述檔案中。
2.如權利要求1所述的方法,其特征在于,包括接收對應于由所述服務器發送到所述 檔案的日志報告的日志報告的副本。
3.如權利要求1所述的方法,其特征在于,包括發出向所述檔案請求包括預期等待時 間的配置信息的配置查詢。
4.如權利要求1所述的方法,其特征在于,包括基于一個或多個時間間隔來對所述要 協調的消息進行分類。
5.如權利要求4所述的方法,其特征在于,所述時間間隔包括以下時間間隔中的一個 或多個對應于與所述檔案相關聯的等待時間的時間間隔、可從本地高速緩存中獲得所述 要協調的消息的副本的時間間隔、以及用于解決延遲問題的時間間隔。
6.如權利要求1所述的方法,其特征在于,包括基于接收到對所述傳遞確認查詢的否 定響應來對所述要協調的消息進行分類。
7.如權利要求1所述的方法,其特征在于,包括在接收到對所述傳遞確認查詢的否定 響應之后發出重試查詢。
8.如權利要求7所述的方法,其特征在于,包括在接收到對所述重試查詢的否定響應 之后將所述要協調的消息重新提交給所述檔案。
9.如權利要求1所述的方法,其特征在于,包括存儲所述要協調的消息;以及在接收到對所述傳遞確認查詢的肯定響應之后,刪除所述要協調的消息。
10.如權利要求1所述的方法,其特征在于,包括根據web服務協議來向所述檔案發出 所述傳遞確認查詢。
11.一種包括包含指令的機器或計算機可讀存儲介質的制品,所述指令在被執行時使 系統能夠實現如權利要求1到10中的任一項所述的方法。
12.一種裝置,包括消息接收組件(332),所述消息接收組件(332)從日志記錄代理(125)接收日志報告的 副本,所述日志報告的副本包括對應于由所述日志記錄代理發送給檔案(140)以供存儲的 消息的要協調的消息;分類組件(334),所述分類組件(334)對所接收的要協調的消息進行分類;以及查詢發出組件(336),所述查詢發出組件(336)向所述檔案發出傳遞確認查詢,以便確 定從服務器(110)發送到所述檔案的消息是否被存儲在所述檔案中。
13.如權利要求12所述的裝置,其特征在于,包括查詢響應接收組件(338),所述查詢響應接收組件(338)從所述檔案接收對所述傳遞 確認查詢的響應,其中所述查詢發出組件在接收到對所述傳遞確認查詢的否定響應之后發出重試查詢;以及補救組件(342),所述補救組件(34 在接收到對所述重試查詢的否定響應后將所述 要協調的消息重新提交給所述檔案。
14.如權利要求12所述的裝置,其特征在于,所述裝置包括所述日志記錄代理。
15.如權利要求12所述的裝置,其特征在于,所述傳遞確認查詢包括web服務查詢。
全文摘要
描述了用于協調和補救由服務器發送以供存儲在檔案中的消息的技術。一些技術可以包括接收要協調消息,該消息對應于由服務器發送以便存儲在檔案中的消息。可對所接收的要協調的消息進行分類,且可以根據供協調的消息的分類來向檔案發出傳遞確認查詢。基于對傳遞確認查詢的響應,可以肯定地確定被發送給檔案以供存儲的消息是否確實被存儲在檔案中。描述并要求保護其他實施例。
文檔編號G06Q50/00GK102077237SQ200980125607
公開日2011年5月25日 申請日期2009年5月28日 優先權日2008年6月27日
發明者G·普拉, J·凱, N·昌德, S·托馬斯, Y·王 申請人:微軟公司