專利名稱:應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子商務(wù)交易技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用于企業(yè)服務(wù)總線的事件 驅(qū)動(dòng)方法。
背景技術(shù):
目前,大型企業(yè)網(wǎng)之間的應(yīng)用集成服務(wù)日益復(fù)雜,傳統(tǒng)的點(diǎn)對(duì)點(diǎn)式的系統(tǒng)集成 顯得捉襟見(jiàn)肘。為了解決這一問(wèn)題,人們提出了企業(yè)服務(wù)總線(enterprise service bus,簡(jiǎn) 稱ESB)的概念,即組成企業(yè)網(wǎng)的各個(gè)子系統(tǒng)以類似于接插件的方式接入一個(gè)公共的信息 平臺(tái),彼此之間相對(duì)獨(dú)立,由調(diào)度引擎進(jìn)行統(tǒng)一的數(shù)據(jù)調(diào)度,以高效整合數(shù)據(jù)和業(yè)務(wù)流 程。按照著名的IT研究與顧問(wèn)咨詢機(jī)構(gòu)Gartner公司所給的定義,企業(yè)服務(wù)總線是一種 體系結(jié)構(gòu),利用企業(yè)的Web服務(wù)、消息中間件、智能路由和轉(zhuǎn)換技術(shù)實(shí)現(xiàn),是傳統(tǒng)中間 技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物,ESB提供了網(wǎng)絡(luò)中最基本的連接中樞。企 業(yè)服務(wù)總線技術(shù)的目標(biāo)是以標(biāo)準(zhǔn)化的方式實(shí)現(xiàn)企業(yè)應(yīng)用集成,完成企業(yè)間應(yīng)用系統(tǒng)的互 聯(lián)、互通和互操作,其中的標(biāo)準(zhǔn)化工作包括連接器標(biāo)準(zhǔn)化、管理標(biāo)準(zhǔn)化、業(yè)務(wù)消息標(biāo)準(zhǔn) 化和消息標(biāo)準(zhǔn)化等。ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構(gòu),可以提供比傳統(tǒng)中間軟件產(chǎn)品更為廉價(jià)的 解決方案,同時(shí)它還可以消除不同應(yīng)用服務(wù)之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)協(xié)調(diào)運(yùn) 作,實(shí)現(xiàn)了不同服務(wù)之間的通信與整合。從功能上看,ESB提供了事件驅(qū)動(dòng)和文檔導(dǎo)向 的處理模式,以及分布式的管理機(jī)制,它支持基于內(nèi)容的路由和過(guò)濾,具備了復(fù)雜數(shù)據(jù) 的傳輸能力,并提供一系列的標(biāo)準(zhǔn)接口。例如,申請(qǐng)?zhí)枮椤?00810227316.9”的中國(guó)專 利申請(qǐng)公開(kāi)了 一種企業(yè)服務(wù)總線的實(shí)現(xiàn)方法。 現(xiàn)有的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,當(dāng)服務(wù)提供者提供的服務(wù)處于不 可用狀態(tài),包括服務(wù)提供者提供的服務(wù)處于不在線狀態(tài)或者服務(wù)調(diào)用者在工作時(shí)間之外 調(diào)用服務(wù)提供者提供的服務(wù)(處于非工作狀態(tài))時(shí),現(xiàn)有的企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法 不能對(duì)服務(wù)進(jìn)行調(diào)用,必須等到服務(wù)處于可用狀態(tài)時(shí)才能對(duì)服務(wù)進(jìn)行調(diào)用,不利于服務(wù) 調(diào)用者隨時(shí)調(diào)用服務(wù);另外,現(xiàn)有的企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法對(duì)服務(wù)請(qǐng)求進(jìn)行同步 處理,導(dǎo)致企業(yè)服務(wù)總線的處理能力低。其中,所謂事件驅(qū)動(dòng),簡(jiǎn)單地說(shuō)就是你點(diǎn)什么 按鈕(即產(chǎn)生什么事件),電腦執(zhí)行什么操作(即調(diào)用什么函數(shù)),當(dāng)然事件不僅限于用 戶的操作。并且,現(xiàn)有的電子商務(wù)交易平臺(tái),服務(wù)調(diào)用者直接調(diào)用服務(wù)提供者是多對(duì)多 的,雜亂無(wú)序的,很難對(duì)行內(nèi)的服務(wù)進(jìn)行維護(hù)管理;服務(wù)調(diào)用者與后臺(tái)服務(wù)的實(shí)現(xiàn)間 耦合度過(guò)高,往往牽一發(fā)而動(dòng)全身,后臺(tái)服務(wù)究竟有多少調(diào)用者,應(yīng)用調(diào)用了哪些服務(wù) 不清導(dǎo)致維護(hù)困難,服務(wù)調(diào)用者和服務(wù)提供者之間的可靠性、事務(wù)處理、同步/異步通 信、安全認(rèn)證管理都需要兩者之間單獨(dú)實(shí)現(xiàn),缺少一個(gè)公共的基礎(chǔ)架構(gòu);并且,缺少 對(duì)后臺(tái)服務(wù)進(jìn)行監(jiān)控、統(tǒng)計(jì)并提供分析數(shù)據(jù)的統(tǒng)一途徑,不便于對(duì)面向服務(wù)的體系結(jié)構(gòu) (Service-OrientedArchitecture, J 簡(jiǎn)稱 SOA)的應(yīng)用進(jìn)行維護(hù)管理。
本發(fā)明解決的問(wèn)題是提供一種應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,服務(wù)調(diào)用 者不必進(jìn)行復(fù)雜的異步調(diào)用,由服務(wù)總線來(lái)完成同步到異步模式的轉(zhuǎn)換。
為解決上述問(wèn)題,本發(fā)明提供一種應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,包 括響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā),所述事件包括服務(wù)調(diào)用者向企業(yè)服務(wù)總線發(fā)出的 多個(gè)服務(wù)請(qǐng)求,所述響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā)包括分別處理所述服務(wù)請(qǐng)求向?qū)?yīng) 的服務(wù)發(fā)送調(diào)用請(qǐng)求;
接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)果;
在所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果都返回后,將所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果發(fā) 送給所述服務(wù)調(diào)用者。
可選的,所述響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā)還包括
在處理所述服務(wù)請(qǐng)求前,判斷所述服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài), 如果所調(diào)用的服務(wù)處于不可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài)。
可選的,所述所調(diào)用的服務(wù)處于可用狀態(tài)包括所調(diào)用的服務(wù)處于在線狀態(tài)或 工作狀態(tài)。
可選的,所述企業(yè)服務(wù)總線包括
消息接收單元,包括多個(gè)消息接收通道,每一消息接收通道用于接收所述服務(wù) 調(diào)用者向企業(yè)服務(wù)總線發(fā)出的多個(gè)服務(wù)請(qǐng)求;
請(qǐng)求處理單元,用于獲取所述多個(gè)服務(wù)請(qǐng)求,并分別對(duì)所述多個(gè)服務(wù)請(qǐng)求處理 后向?qū)?yīng)的服務(wù)發(fā)送調(diào)用請(qǐng)求,分別接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)^ ο
可選的,所述企業(yè)服務(wù)總線還包括
消息隊(duì)列單元,用于從所述多個(gè)消息接收通道接收包括所述多個(gè)服務(wù)請(qǐng)求的消 息,并按預(yù)定規(guī)則進(jìn)行排序;
處理線程組,用于從所述消息隊(duì)列單元接收預(yù)定數(shù)量的已排序的消息,并發(fā)送 給所述請(qǐng)求處理單元。
可選的,所述按預(yù)定規(guī)則進(jìn)行排序是指按消息發(fā)送或接收的時(shí)間順序進(jìn)行排序。
可選的,所述消息包括至少兩個(gè)服務(wù)請(qǐng)求;
可選的,所述企業(yè)服務(wù)總線還包括請(qǐng)求拆分單元,用于將所述消息接收單元 接收的消息拆分成服務(wù)請(qǐng)求后發(fā)送給所述消息隊(duì)列單元。
可選的,所述請(qǐng)求處理單元包括多種請(qǐng)求處理管道,每一種請(qǐng)求處理管道對(duì)應(yīng) 處理一種服務(wù)請(qǐng)求。
可選的,所述服務(wù)包括至少一個(gè)應(yīng)用服務(wù),所述請(qǐng)求處理單元處理服務(wù)請(qǐng)求包 括按預(yù)定的流程生成至少一個(gè)訪問(wèn)請(qǐng)求,并基于所述訪問(wèn)請(qǐng)求調(diào)用對(duì)應(yīng)的應(yīng)用服務(wù)發(fā)送 調(diào)用請(qǐng)求。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
服務(wù)調(diào)用者和服務(wù)提供者通過(guò)企業(yè)服務(wù)總線的標(biāo)準(zhǔn)接口與電子交易平臺(tái)連接,5將各種應(yīng)用程序整合于電子交易平臺(tái),通過(guò)本發(fā)明提供的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū) 動(dòng)方法,企業(yè)服務(wù)總線實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的調(diào)用,服務(wù)調(diào)用者不必進(jìn)行復(fù)雜的異步 調(diào)用,由企業(yè)服務(wù)總線來(lái)進(jìn)行同步到異步模式的轉(zhuǎn)換。
另外,本發(fā)明的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,提供一種處理異常服務(wù) 請(qǐng)求的事件的方法,首先判斷服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài),如果所調(diào)用的 服務(wù)處于不可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài);在所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài) 后,繼續(xù)處理服務(wù)請(qǐng)求。通過(guò)這樣一種事件驅(qū)動(dòng)方法,服務(wù)調(diào)用者可以在任何時(shí)候進(jìn)行 服務(wù)調(diào)用,而不必等待服務(wù)調(diào)用者處于可用狀態(tài)時(shí)才能調(diào)用,企業(yè)服務(wù)總線在任何時(shí)候 都可以響應(yīng)服務(wù)調(diào)用,并由企業(yè)服務(wù)總線判斷所調(diào)用的服務(wù)是否為可用狀態(tài),在所調(diào)用 的服務(wù)變?yōu)榭捎脿顟B(tài)時(shí)再對(duì)服務(wù)請(qǐng)求進(jìn)行處理。
圖1是本發(fā)明具體實(shí)施方式
的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法的流程示意 圖2是本發(fā)明具體實(shí)施例的企業(yè)服務(wù)總線的內(nèi)部架構(gòu)示意圖3是請(qǐng)求處理單元的架構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明具體實(shí)施方式
的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,服務(wù)調(diào)用者和服 務(wù)提供者通過(guò)于企業(yè)服務(wù)總線的標(biāo)準(zhǔn)接口與電子交易平臺(tái)連接,將各種應(yīng)用程序整合于 電子交易平臺(tái),通過(guò)本發(fā)明提供的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,企業(yè)服務(wù)總線 實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的調(diào)用,服務(wù)調(diào)用者不必進(jìn)行復(fù)雜的異步調(diào)用,由企業(yè)服務(wù)總線 來(lái)進(jìn)行同步到異步模式的轉(zhuǎn)換。
另外,本發(fā)明的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,提供一種處理異常服務(wù) 請(qǐng)求的事件的方法,首先判斷服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài),如果所調(diào)用的 服務(wù)處于不可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài);在所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài) 后,繼續(xù)執(zhí)行服務(wù)請(qǐng)求。通過(guò)這樣一種事件驅(qū)動(dòng)方法,服務(wù)調(diào)用者可以在任何時(shí)候進(jìn)行 服務(wù)調(diào)用,而不必等待服務(wù)調(diào)用者處于可用狀態(tài)時(shí)才能調(diào)用,企業(yè)服務(wù)總線在任何時(shí)候 都可以響應(yīng)服務(wù)調(diào)用,并由企業(yè)服務(wù)總線判斷所調(diào)用的服務(wù)是否為可用狀態(tài),在所調(diào)用 的服務(wù)變?yōu)榭捎脿顟B(tài)時(shí)再對(duì)服務(wù)請(qǐng)求進(jìn)行處理。
參考圖1,本發(fā)明具體實(shí)施方式
的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,包括 步驟Si,響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā),所述事件包括服務(wù)調(diào)用者向企業(yè)服務(wù)總線發(fā) 出的多個(gè)服務(wù)請(qǐng)求,所述響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā)包括分別處理所述服務(wù)請(qǐng)求向 對(duì)應(yīng)的服務(wù)發(fā)送調(diào)用請(qǐng)求;步驟幻,接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié) 果,其中,多個(gè)服務(wù)請(qǐng)求對(duì)應(yīng)的調(diào)用請(qǐng)求的處理結(jié)果分別返回;步驟S3,在所述多個(gè)服 務(wù)請(qǐng)求的處理結(jié)果都返回后,將所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果發(fā)送給所述服務(wù)調(diào)用者。 本發(fā)明的事件驅(qū)動(dòng)方法,本質(zhì)是借助的服務(wù)編排引擎執(zhí)行狀態(tài)機(jī)Mtate Machine)模型, 給服務(wù)調(diào)用者提供方便,服務(wù)調(diào)用者發(fā)送多個(gè)服務(wù)請(qǐng)求后,無(wú)需等待所有的后續(xù)服務(wù)請(qǐng) 求完成就返回,服務(wù)總線在所有的服務(wù)請(qǐng)求都完成后對(duì)服務(wù)調(diào)用者進(jìn)行通知。
本發(fā)明具體實(shí)施方式
的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,所述響應(yīng)對(duì)企業(yè) 服務(wù)總線的事件觸發(fā)還包括在處理所述服務(wù)請(qǐng)求前,判斷所述服務(wù)請(qǐng)求所調(diào)用的服務(wù) 是否處于可用狀態(tài),如果所調(diào)用的服務(wù)處于不可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿?態(tài)。在所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài)后,處理所述服務(wù)請(qǐng)求。其中,判斷所述服務(wù)請(qǐng)求所 調(diào)用的服務(wù)是否處于可用狀態(tài),可以對(duì)服務(wù)調(diào)用者發(fā)出的任一服務(wù)請(qǐng)求所調(diào)用的服務(wù)進(jìn) 行判斷,也可以對(duì)服務(wù)調(diào)用者發(fā)出的服務(wù)請(qǐng)求所調(diào)用的某些服務(wù)進(jìn)行判斷,該某些服務(wù) 可以為預(yù)定的服務(wù),可能出現(xiàn)異?,F(xiàn)象的服務(wù)。所述所調(diào)用的服務(wù)處于可用狀態(tài)包括 所調(diào)用的服務(wù)處于在線狀態(tài)或工作狀態(tài)。本發(fā)明的事件驅(qū)動(dòng)方法,對(duì)不是—周7 天一天M小時(shí))的服務(wù)、或可能發(fā)生的服務(wù)不在線狀況,進(jìn)行屏蔽,方便調(diào)用服務(wù)的客 戶端簡(jiǎn)單完成任務(wù)。例如在銀行執(zhí)行基金買(mǎi)賣(mài)操作中,用戶進(jìn)行基金開(kāi)戶,則業(yè)務(wù)規(guī)則 需要考慮現(xiàn)在是否過(guò)了下午3點(diǎn),如果過(guò)了下午3點(diǎn),基金開(kāi)戶服務(wù)將不可用,需要等待 第二天9點(diǎn)后才能對(duì)開(kāi)戶請(qǐng)求進(jìn)行處理。此機(jī)制可以簡(jiǎn)化業(yè)務(wù)邏輯,用戶可以在任意時(shí) 間提交請(qǐng)求,系統(tǒng)自動(dòng)判斷服務(wù)是否可用(Available),對(duì)于不可用狀態(tài)下的服務(wù)調(diào)用, 需要等待服務(wù)的服務(wù)狀態(tài)Service Status)變?yōu)榭捎?Available)后的事件觸發(fā)其繼續(xù)執(zhí)行 下去。
下面結(jié)合企業(yè)服務(wù)總線,詳細(xì)說(shuō)明本發(fā)明的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法。
參考圖2,企業(yè)服務(wù)總線100,包括消息接收單元110,用于接收服務(wù)調(diào)用者 發(fā)送的多個(gè)服務(wù)請(qǐng)求,每一服務(wù)請(qǐng)求被作為一個(gè)事件,包括多個(gè)消息接收通道,分別為 消息接收通道1、消息接收通道2……消息接收通道n,每一消息接收通道接收一個(gè)服務(wù) 調(diào)用者發(fā)送的包括多個(gè)服務(wù)請(qǐng)求的消息;
請(qǐng)求處理單元140,用于獲取所述多個(gè)服務(wù)請(qǐng)求,將每一服務(wù)請(qǐng)求作為一個(gè)事 件,分別對(duì)所述多個(gè)服務(wù)請(qǐng)求(多個(gè)事件)處理后向調(diào)用服務(wù)單元150中對(duì)應(yīng)的服務(wù)發(fā)送 調(diào)用請(qǐng)求,分別接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)果;其中,請(qǐng)求處理 單元140將服務(wù)請(qǐng)求處理后向調(diào)用服務(wù)單元150中對(duì)應(yīng)的服務(wù)發(fā)送調(diào)用請(qǐng)求,由服務(wù)單元 150中對(duì)應(yīng)的服務(wù)產(chǎn)生服務(wù)請(qǐng)求的處理結(jié)果。本發(fā)明的事件驅(qū)動(dòng)方法,將每一服務(wù)請(qǐng)求作 為一件事件,每處理完一個(gè)服務(wù)請(qǐng)求(一個(gè)事件),就將每一服務(wù)請(qǐng)求的處理結(jié)果返回, 而不是在所有的服務(wù)請(qǐng)求的處理完成后,再將所有的服務(wù)請(qǐng)求的處理結(jié)果一起返回,達(dá) 到對(duì)多種應(yīng)用服務(wù)的同步請(qǐng)求,異步處理并返回,方便對(duì)不同的應(yīng)用服務(wù)進(jìn)行調(diào)用,并 且通過(guò)本發(fā)明的事件驅(qū)動(dòng)方法,企業(yè)服務(wù)總線可以統(tǒng)一實(shí)現(xiàn)對(duì)多個(gè)服務(wù)請(qǐng)求進(jìn)行同步請(qǐng) 求、異步處理。
在該具體實(shí)施例中,請(qǐng)求處理單元140包括多種請(qǐng)求處理管道,每一種請(qǐng)求處 理管道包括多個(gè)請(qǐng)求處理管道,每一種請(qǐng)求處理管道對(duì)應(yīng)處理一種服務(wù)請(qǐng)求;參考圖 3,請(qǐng)求處理單元140包括多種請(qǐng)求處理管道,分別為第一種請(qǐng)求處理管道10、第二種 請(qǐng)求處理管道20……第N種請(qǐng)求處理管道nO,每一種請(qǐng)求處理管道包括多個(gè)請(qǐng)求處理管 道,每種請(qǐng)求處理管道可以處理多個(gè)相同類型的服務(wù)請(qǐng)求,以第一種請(qǐng)求處理管道10為 例,該第一種請(qǐng)求處理管道10包括多個(gè)請(qǐng)求處理管道分別為請(qǐng)求處理管道11、請(qǐng)求處理 管道12……請(qǐng)求處理管道In;需要說(shuō)明的是,所述請(qǐng)求處理管道的種類與服務(wù)的種類請(qǐng) 求存在對(duì)應(yīng)的關(guān)系,每一種服務(wù)請(qǐng)求對(duì)應(yīng)相同種類的請(qǐng)求處理管道,每一消息中包括的服務(wù)請(qǐng)求將會(huì)進(jìn)入對(duì)應(yīng)種類的請(qǐng)求處理管道中,由請(qǐng)求處理管道處理服務(wù)請(qǐng)求。
其中,在該具體實(shí)施例中,每一種請(qǐng)求處理管道包括解密階段(stage),處理階 段(stage),此解密階段對(duì)應(yīng)消息接收通道接收消息時(shí),調(diào)用加密單元對(duì)消息加密,將加 密的消息通過(guò)調(diào)用解密單元解密,在其他實(shí)施例中,每一種請(qǐng)求處理管道可以包括不同 的階段,例如也可以包括解壓階段。請(qǐng)參閱圖3,在本發(fā)明的該具體實(shí)施例中,服務(wù)單元 150中包括服務(wù)151,所述服務(wù)151包括至少一個(gè)應(yīng)用服務(wù),在該具體實(shí)施例中為應(yīng)用服 務(wù)1、應(yīng)用服務(wù)1……應(yīng)用服務(wù)n,所述處理階段處理服務(wù)請(qǐng)求包括按預(yù)定的流程生成 至少一個(gè)訪問(wèn)請(qǐng)求,并基于所述訪問(wèn)請(qǐng)求調(diào)用服務(wù)單元150中對(duì)應(yīng)的應(yīng)用服務(wù),例如, 請(qǐng)求處理管道10中生成的訪問(wèn)請(qǐng)求調(diào)用應(yīng)用服務(wù)1、請(qǐng)求處理管道20中生成的訪問(wèn)請(qǐng)求 調(diào)用應(yīng)用服務(wù)2……請(qǐng)求處理管道nO中生成的訪問(wèn)請(qǐng)求調(diào)用應(yīng)用服務(wù)n,其中,訪問(wèn)請(qǐng)求 處理后向?qū)?yīng)的應(yīng)用服務(wù)發(fā)送調(diào)用請(qǐng)求,由對(duì)應(yīng)的應(yīng)用服務(wù)產(chǎn)生訪問(wèn)請(qǐng)求的處理結(jié)果。 其中,應(yīng)用服務(wù)由服務(wù)提供者提供,通過(guò)訪問(wèn)請(qǐng)求調(diào)用應(yīng)用服務(wù)。
在本發(fā)明的該具體實(shí)施例中,應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,在訪問(wèn)請(qǐng) 求調(diào)用對(duì)應(yīng)的應(yīng)用服務(wù)前,還包括判斷分別對(duì)所述多個(gè)服務(wù)請(qǐng)求(多個(gè)事件)處理前, 還包括判斷所述服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài),如果所調(diào)用的服務(wù)處于不 可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài);在所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài)后,調(diào)用對(duì) 應(yīng)的服務(wù)。例如,當(dāng)提供信用的應(yīng)用服務(wù)出現(xiàn)問(wèn)題為不可用狀態(tài)時(shí),在訪問(wèn)請(qǐng)求調(diào)用信 用的應(yīng)用服務(wù)前,首先判斷信用的應(yīng)用服務(wù)是否可用,如果不可用,則訪問(wèn)請(qǐng)求處于等 待狀態(tài),并且每隔一段時(shí)間就判斷一次信用的應(yīng)用服務(wù)是否可用,直至信用的應(yīng)用服務(wù) 變?yōu)榭捎脿顟B(tài)后,訪問(wèn)請(qǐng)求才調(diào)用信用的應(yīng)用服務(wù)。其中,本發(fā)明中的服務(wù)的不可用狀 態(tài)包括所調(diào)用的服務(wù)處于不在線狀態(tài)或者在周一到周五的八個(gè)工作小時(shí)調(diào)用服務(wù)。通 過(guò)這樣一種事件驅(qū)動(dòng)方法,服務(wù)調(diào)用者可以在任何時(shí)候進(jìn)行服務(wù)調(diào)用,而不必等待服務(wù) 調(diào)用者處于可用狀態(tài)時(shí)才能調(diào)用,由企業(yè)服務(wù)總線判斷所調(diào)用的服務(wù)是否為可用狀態(tài), 在所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài)時(shí)再對(duì)服務(wù)請(qǐng)求進(jìn)行處理,從而可以方便服務(wù)調(diào)用者隨時(shí) 發(fā)送服務(wù)請(qǐng)求。
在本發(fā)明的另一具體實(shí)施例中,判斷所調(diào)用的應(yīng)用服務(wù)是否處于可用狀態(tài)還可 以在發(fā)送調(diào)用請(qǐng)求前,在向?qū)?yīng)的應(yīng)用服務(wù)發(fā)送調(diào)用請(qǐng)求前還包括判斷所述訪問(wèn)請(qǐng)求 所調(diào)用的應(yīng)用服務(wù)是否處于可用狀態(tài),如果所調(diào)用的應(yīng)用服務(wù)處于不可用狀態(tài),等待所 調(diào)用的應(yīng)用服務(wù)變?yōu)榭捎脿顟B(tài)。
其中,判斷所述服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài),可以對(duì)服務(wù)調(diào)用者 發(fā)出的所有服務(wù)請(qǐng)求所調(diào)用的服務(wù)進(jìn)行判斷,也可以對(duì)服務(wù)調(diào)用者發(fā)出的服務(wù)請(qǐng)求所調(diào) 用的某些服務(wù)進(jìn)行判斷,該某些服務(wù)可以為預(yù)定的服務(wù),例如,這些預(yù)定的服務(wù)為不是 MX7的服務(wù),即一周七天每天M小時(shí)都處于可用狀態(tài)的服務(wù),而是5X8服務(wù)(周一到 周五,每一天的八個(gè)工作小時(shí)時(shí)間可用的服務(wù))。
為了減少服務(wù)調(diào)用者對(duì)不同的服務(wù)請(qǐng)求分別進(jìn)行操作,在一個(gè)消息接收通道里 包括至少一個(gè)服務(wù)請(qǐng)求,服務(wù)調(diào)用者可以一次提出多個(gè)服務(wù)請(qǐng)求;在服務(wù)調(diào)用者一次提 出多個(gè)服務(wù)請(qǐng)求時(shí),通過(guò)請(qǐng)求打包單元將用戶進(jìn)行的多個(gè)服務(wù)請(qǐng)求打包后以消息的形式 發(fā)送。在本發(fā)明的具體實(shí)施例中,消息接收通道還通過(guò)調(diào)用加密單元,將消息接收通道 接收的消息加密。CN 102025651 A說(shuō)明書(shū)6/7頁(yè)
請(qǐng)參閱圖2,在本發(fā)明的該具體實(shí)施例中,所述企業(yè)服務(wù)總線還包括消息隊(duì) 列單元120,用于從消息接收單元110中接收消息,并且將來(lái)自于多個(gè)消息接收通道的多 個(gè)消息,根據(jù)時(shí)間順序進(jìn)行排隊(duì);處理線程組130,包括預(yù)定數(shù)量的處理線程,用于從 所述消息隊(duì)列單元120接收預(yù)定數(shù)量的已排序的消息,并發(fā)送給所述請(qǐng)求處理單元140。
在本發(fā)明的具體實(shí)施例中,消息隊(duì)列單元120根據(jù)時(shí)間順序?qū)邮盏南⑦M(jìn)行 排隊(duì),時(shí)間在前的消息比時(shí)間在后的消息優(yōu)先處理,在此的時(shí)間順序?qū)?yīng)于服務(wù)調(diào)用者 提出請(qǐng)求操作的先后順序,也可以是消息隊(duì)列單元120接收消息的先后順序,參考圖1和 圖2,排隊(duì)后的消息隊(duì)列分別為消息隊(duì)列10、消息隊(duì)列20……消息隊(duì)列nO;且在消息進(jìn) 入消息隊(duì)列單元120前,消息隊(duì)列單元120調(diào)用請(qǐng)求拆分單元(圖中未示),由請(qǐng)求拆分 單元將打包的消息拆分成服務(wù)請(qǐng)求,此服務(wù)請(qǐng)求的數(shù)量對(duì)應(yīng)于服務(wù)調(diào)用者提出的服務(wù)請(qǐng) 求數(shù)量,參考附圖1,消息隊(duì)列10中的消息被拆分成服務(wù)請(qǐng)求11,服務(wù)請(qǐng)求12,服務(wù)請(qǐng) 求13,消息隊(duì)列20中的消息被拆分成服務(wù)請(qǐng)求21、服務(wù)請(qǐng)求22、服務(wù)請(qǐng)求23,……消 息隊(duì)列nO中的消息被拆分成服務(wù)請(qǐng)求nl、服務(wù)請(qǐng)求n2、服務(wù)請(qǐng)求n3,需要說(shuō)明的是,此 例中每一消息被拆分成三個(gè)服務(wù)請(qǐng)求,只是起示例性,在具體的實(shí)施例中,每一消息中 包括的服務(wù)請(qǐng)求數(shù)量根據(jù)具體情況(即服務(wù)端用戶的操作)而定;需要說(shuō)明的是,在本發(fā) 明的該具體實(shí)施例中根據(jù)時(shí)間順序?qū)ο㈥?duì)列單元120中的消息進(jìn)行排隊(duì),在本發(fā)明的 其他實(shí)施例中也可 以根據(jù)其他預(yù)定規(guī)則對(duì)消息隊(duì)列單元中的消息進(jìn)行排隊(duì),例如根據(jù)消 息的優(yōu)先級(jí)(重要性)對(duì)消息隊(duì)列單元中的消息進(jìn)行排隊(duì)。
在本發(fā)明的另一實(shí)施例中,將打包的消息進(jìn)行拆分也可以在消息接收通道接收 消息前,所述消息包括至少兩個(gè)服務(wù)請(qǐng)求;所述企業(yè)服務(wù)總線還包括請(qǐng)求拆分單元, 用于將所述包括至少一個(gè)服務(wù)請(qǐng)求的消息拆分成服務(wù)請(qǐng)求后發(fā)送給所述消息隊(duì)列接收單 元。在本發(fā)明的其他實(shí)施例中,將打包的消息進(jìn)行拆分也可以在處理線程組接收消息 前,所述消息包括至少兩個(gè)服務(wù)請(qǐng)求;所述企業(yè)服務(wù)總線還包括請(qǐng)求拆分單元,用于 從所述消息隊(duì)列單元接收消息,并將所述消息隊(duì)列單元接收的包括至少一個(gè)服務(wù)請(qǐng)求的 消息拆分成服務(wù)請(qǐng)求后發(fā)送給所述處理線程組。
處理線程組130,包括預(yù)定數(shù)量的處理線程,分別為處理線程1、處理線程 2……處理線程n,用于從所述消息隊(duì)列單元120接收預(yù)定數(shù)量的已排序的消息;處理 線程組130中的處理線程的數(shù)量為預(yù)定的數(shù)量,此數(shù)量根據(jù)電子交易平臺(tái)的處理能力設(shè) 定,例如,處理線程組130中的處理線程的數(shù)量為200個(gè),則同一時(shí)間電子交易平臺(tái)只能 響應(yīng)200個(gè)消息,對(duì)于第200個(gè)以后的消息,電子交易平臺(tái)不響應(yīng),避免服務(wù)調(diào)用者過(guò)多 造成電子交易平臺(tái)當(dāng)機(jī)的現(xiàn)象,從而可以確保電子交易平臺(tái)的正常運(yùn)行。其中,處理線 程1儲(chǔ)存消息隊(duì)列10中的服務(wù)請(qǐng)求11、服務(wù)請(qǐng)求12、服務(wù)請(qǐng)求13,處理線程2儲(chǔ)存消息 隊(duì)列20中的服務(wù)請(qǐng)求21、服務(wù)請(qǐng)求22、服務(wù)請(qǐng)求23,……處理線程η儲(chǔ)存消息隊(duì)列nO 中的服務(wù)請(qǐng)求nl、服務(wù)請(qǐng)求n2、服務(wù)請(qǐng)求n3。
在本發(fā)明的具體實(shí)施例中,企業(yè)服務(wù)總線還包括請(qǐng)求傳送通道,用于尋址, 將從所述請(qǐng)求處理單元生成的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的應(yīng)用服務(wù)。
在本發(fā)明的該具體實(shí)施例中,由請(qǐng)求處理單元140處理完的服務(wù)請(qǐng)求返回服務(wù) 調(diào)用者的過(guò)程和服務(wù)調(diào)用者發(fā)送服務(wù)請(qǐng)求的處理過(guò)程相反,首先通過(guò)請(qǐng)求傳送通道將調(diào) 用應(yīng)用服務(wù)后的信息發(fā)送給對(duì)應(yīng)的請(qǐng)求處理管道,由請(qǐng)求處理管道將信息加密后發(fā)送給9對(duì)應(yīng)的處理線程,請(qǐng)求處理線程將接收到的服務(wù)請(qǐng)求的結(jié)果發(fā)送給對(duì)應(yīng)的消息隊(duì)列,之 后發(fā)送給對(duì)應(yīng)的消息接收通道,當(dāng)一個(gè)消息中包括的所有的服務(wù)請(qǐng)求結(jié)果都返回其對(duì)應(yīng) 的消息接收通道時(shí),消息接收通道調(diào)用請(qǐng)求打包單元,將一個(gè)消息中包括的所有消息打 包后發(fā)送給相應(yīng)的服務(wù)調(diào)用者,此時(shí)用戶可以得到所發(fā)送的消息的處理結(jié)果。需要說(shuō)明 的是,本發(fā)明的事件驅(qū)動(dòng)方法,將每一服務(wù)請(qǐng)求作為一件事件,每處理完一個(gè)服務(wù)請(qǐng)求 (一個(gè)事件),就將每一服務(wù)請(qǐng)求的處理結(jié)果返回,而不是在所有的服務(wù)請(qǐng)求的處理完成 后,再將所有的服務(wù)請(qǐng)求的處理結(jié)果一起返回,達(dá)到對(duì)多種應(yīng)用服務(wù)的同步請(qǐng)求,異步 處理并返回,方便對(duì)不同的應(yīng)用服務(wù)進(jìn)行調(diào)用,并且通過(guò)本發(fā)明的事件驅(qū)動(dòng)方法,企業(yè) 服務(wù)總線可以統(tǒng)一實(shí)現(xiàn)對(duì)多個(gè)服務(wù)請(qǐng)求進(jìn)行同步請(qǐng)求、異步處理。
本發(fā)明雖然已以較佳實(shí)施例公開(kāi)如上,但其并不是用來(lái)限定本發(fā)明,任何本領(lǐng) 域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對(duì) 本發(fā)明技術(shù)方案做出可能的變動(dòng)和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依 據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化及修飾,均屬于本發(fā) 明技術(shù)方案的保護(hù)范圍。
權(quán)利要求
1.一種應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,包括響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā),所述事件包括服務(wù)調(diào)用者向企業(yè)服務(wù)總線發(fā)出的 多個(gè)服務(wù)請(qǐng)求,所述響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā)包括分別處理所述服務(wù)請(qǐng)求向?qū)?yīng) 的服務(wù)發(fā)送調(diào)用請(qǐng)求;接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)果;在所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果都返回后,將所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果發(fā)送給 所述服務(wù)調(diào)用者。
2.如權(quán)利要求1所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述響應(yīng) 對(duì)企業(yè)服務(wù)總線的事件觸發(fā)還包括在處理所述服務(wù)請(qǐng)求前,判斷所述服務(wù)請(qǐng)求所調(diào)用的服務(wù)是否處于可用狀態(tài),如果 所調(diào)用的服務(wù)處于不可用狀態(tài),等待所調(diào)用的服務(wù)變?yōu)榭捎脿顟B(tài)。
3.如權(quán)利要求2所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述所調(diào) 用的服務(wù)處于可用狀態(tài)包括所調(diào)用的服務(wù)處于在線狀態(tài)或工作狀態(tài)。
4.如權(quán)利要求1或2所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述 企業(yè)服務(wù)總線包括消息接收單元,包括多個(gè)消息接收通道,每一消息接收通道用于接收所述服務(wù)調(diào)用 者向企業(yè)服務(wù)總線發(fā)出的多個(gè)服務(wù)請(qǐng)求;請(qǐng)求處理單元,用于獲取所述多個(gè)服務(wù)請(qǐng)求,并分別對(duì)所述多個(gè)服務(wù)請(qǐng)求處理后向 對(duì)應(yīng)的服務(wù)發(fā)送調(diào)用請(qǐng)求,分別接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)果。
5.如權(quán)利要求4所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述企業(yè) 服務(wù)總線還包括消息隊(duì)列單元,用于從所述多個(gè)消息接收通道接收包括所述多個(gè)服務(wù)請(qǐng)求的消息, 并按預(yù)定規(guī)則進(jìn)行排序;處理線程組,用于從所述消息隊(duì)列單元接收預(yù)定數(shù)量的已排序的消息,并發(fā)送給所 述請(qǐng)求處理單元。
6.如權(quán)利要求5所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述按預(yù) 定規(guī)則進(jìn)行排序是指按消息發(fā)送或接收的時(shí)間順序進(jìn)行排序。
7.如權(quán)利要求5所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述消息 包括至少兩個(gè)服務(wù)請(qǐng)求;所述企業(yè)服務(wù)總線還包括請(qǐng)求拆分單元,用于將所述消息接收單元接收的消息拆 分成服務(wù)請(qǐng)求后發(fā)送給所述消息隊(duì)列單元。
8.如權(quán)利要求5所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述請(qǐng)求 處理單元包括多種請(qǐng)求處理管道,每一種請(qǐng)求處理管道對(duì)應(yīng)處理一種服務(wù)請(qǐng)求。
9.如權(quán)利要求5所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,所述服務(wù) 包括至少一個(gè)應(yīng)用服務(wù),所述請(qǐng)求處理單元處理服務(wù)請(qǐng)求包括按預(yù)定的流程生成至少一 個(gè)訪問(wèn)請(qǐng)求,并基于所述訪問(wèn)請(qǐng)求向?qū)?yīng)的應(yīng)用服務(wù)發(fā)送調(diào)用請(qǐng)求。
10.如權(quán)利要求9所述的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,其特征在于,在向?qū)?應(yīng)的應(yīng)用服務(wù)發(fā)送調(diào)用請(qǐng)求前還包括判斷所述訪問(wèn)請(qǐng)求所調(diào)用的應(yīng)用服務(wù)是否處于可用狀態(tài),如果所調(diào)用的應(yīng)用服務(wù)處于不可用狀態(tài),等待所調(diào)用的應(yīng)用服‘務(wù)變?yōu)榭捎脿顟B(tài)。
全文摘要
一種應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,包括響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā),所述事件包括服務(wù)調(diào)用者向企業(yè)服務(wù)總線發(fā)出的多個(gè)服務(wù)請(qǐng)求,所述響應(yīng)對(duì)企業(yè)服務(wù)總線的事件觸發(fā)包括分別處理所述服務(wù)請(qǐng)求向?qū)?yīng)的服務(wù)發(fā)送調(diào)用請(qǐng)求;接收所述對(duì)應(yīng)的服務(wù)返回的所述調(diào)用請(qǐng)求的處理結(jié)果在所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果都返回后,將所述多個(gè)服務(wù)請(qǐng)求的處理結(jié)果發(fā)送給所述服務(wù)調(diào)用者。通過(guò)本發(fā)明提供的應(yīng)用于企業(yè)服務(wù)總線的事件驅(qū)動(dòng)方法,企業(yè)服務(wù)總線實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的調(diào)用,服務(wù)調(diào)用者不必進(jìn)行復(fù)雜的異步調(diào)用,由企業(yè)服務(wù)總線來(lái)進(jìn)行同步到異步模式的轉(zhuǎn)換。
文檔編號(hào)H04L29/08GK102025651SQ201010197460
公開(kāi)日2011年4月20日 申請(qǐng)日期2010年6月4日 優(yōu)先權(quán)日2010年6月4日
發(fā)明者虞鋼 申請(qǐng)人:西本新干線股份有限公司