亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在消息傳遞中間件環(huán)境中定義替換信道路由機制的系統(tǒng)的制作方法

文檔序號:6488411閱讀:137來源:國知局
專利名稱:在消息傳遞中間件環(huán)境中定義替換信道路由機制的系統(tǒng)的制作方法
技術領域
本發(fā)明涉及消息傳遞中間件(middleware)環(huán)境,其中借助于消息隊列從源應用程序通過傳輸網絡傳送消息,特別涉及一種用于在這種環(huán)境中定義替換信道路由選擇機制的系統(tǒng)。
背景技術
在消息傳遞(messaging)中間件環(huán)境,如IBM的MQ系列中,應用程序通過傳輸網絡,如局域網(LAN)、廣域網(WAN)或公共交換電話網絡(PSTN),借助于隊列進行通信。在源方,應用程序打開隊列并且將消息放置到其中。移動器或消息信道代理(MCA)是負責將消息移到位于目標方的目標隊列中的程序。
當源應用程序想要將消息發(fā)送給目標應用程序時,它必須通過消息隊列接口(MQI)與源隊列管理器進行通信,以便將消息放置到傳送隊列中。在將消息放置到隊列中之前,隊列管理器添加首標,該首標包含來自遠程隊列定義的信息,如目標隊列管理器的名稱和目標隊列的名稱。
通過通信信道來執(zhí)行消息的傳送??梢允謩踊蜃詣拥貑舆@些信道。為了自動地啟動信道,必須將傳送隊列與信道啟動隊列相關聯(lián),其中,當要被傳送的消息被放置到傳送隊列中時,將啟動消息放置到該信道啟動隊列中。作為MQ系列程序的信道啟動器用來監(jiān)控啟動隊列。當信道啟動器在啟動隊列中檢測到消息時,它啟動正被使用的特定信道的消息信道代理(MCA),并且后面這個程序在網絡上將該消息移到該信道的目標方。
在接收方,監(jiān)聽器程序必須已經被啟動。該程序監(jiān)控特定端口,缺省地是專用于MQ系列的端口。當消息到達時,監(jiān)聽器啟動將消息移到指定的本地隊列中的、與信道相關聯(lián)的MCA??梢允謩踊蜃詣拥貑犹幚磉M入(incoming)消息的程序。為了自動地啟動該程序,MCA將進入消息放置到本地隊列中,并且將觸發(fā)消息放置到由觸發(fā)監(jiān)控器監(jiān)控的啟動隊列中。后面這個程序調用在處理定義中所指定的應用程序,其發(fā)出從本地隊列獲得消息的命令。
在上面的系統(tǒng)中,可能存在由于連接性故障的通信問題。在這種情況下,不能啟用要用來移動消息的信道,并且消息保持在傳送隊列中。當不再傳遞由消息傳遞中間件保證其傳遞的關鍵消息(例如,數(shù)據(jù)庫更新、訂單、庫存...)時,這可能導致嚴重問題。對這種問題的唯一解決方案是停止隊列管理器(從而影響整個業(yè)務活動的傳遞)并且手動地定義替換通信路徑。這是較長、關鍵且麻煩的處理,其要求對所有隊列管理器的相互通信的徹底監(jiān)控。此外,由于具有高技能的工作人員必須隨時可用以及準備采取行動,因此該解決方案導致了大量的費用。

發(fā)明內容
因此,本發(fā)明的目的是提供一種系統(tǒng),其被適配成一旦要被使用的主信道出故障,就自動地選擇替換信道,以便在消息傳遞中間件環(huán)境中的兩個應用程序之間傳送消息。
因此,本發(fā)明涉及一種路由選擇系統(tǒng),用于在消息傳遞中間件系統(tǒng)中定義替換信道路由選擇機制,其中,借助于消息隊列,通過傳送網絡將消息從源應用程序傳送到目標應用程序,這種消息傳遞中間件系統(tǒng)包括源隊列管理器,用于管理消息的發(fā)送;傳送隊列,由源應用程序將要被傳送的消息放置到其中;主信道,用于在傳送網絡上傳送消息;接收隊列,用于接收消息并且由目標應用程序從其獲得這些消息;目標隊列管理器,用于管理消息的接收;和事件隊列,其中,有關主信道的事件被放置到該事件隊列中。該系統(tǒng)包括有限狀態(tài)機,用于接收信道事件作為激活輸入,并且針對每個信道事件提供要被采取的操作。所述操作之一是當主信道出故障時,在替換信道上傳送消息。


通過參考附圖閱讀下面對本發(fā)明的更具體描述,本發(fā)明的上述和其它目的、特征以及優(yōu)點將會變得更好理解,其中圖1是表示消息傳遞中間件系統(tǒng)的方框圖,其中與源隊列管理器相關聯(lián)的源應用程序將消息發(fā)送到與目標隊列管理器相關聯(lián)的目標應用程序;圖2是包括根據(jù)本發(fā)明的特征的源隊列管理器的示意圖;
圖3是表示將消息從源隊列管理器發(fā)送到目標隊列管理器的流程的方框圖,并且其中使用了中間隊列管理器;以及圖4是每當檢測到信道事件時,由源隊列管理器實現(xiàn)的處理的流程圖。
具體實施例方式
參考圖1,假定源應用程序10想要通過網絡14向目標應用程序12傳達消息,其中,網絡14可以是持久性網絡,如局域網(LAN)、廣域網(WAN),或暫時性網絡,如公共交換電話網絡(PSTN)、或綜合業(yè)務數(shù)字網(ISDN)。
在源方,在將消息傳輸?shù)絺魉完犃蠶MB 20之前,由應用程序且在源隊列管理器QMA 16的控制下,將每個消息放置(PUT指令)到遠程隊列Q1 18中。然后,將隊列20的一個消息或多個消息從信道發(fā)送器(QMA.QMB)22傳送到目標方的信道接收器(QMA.QMB)24。注意,在下文中,信道將指定源方的信道發(fā)送器和目標方的信道接收器之間的邏輯連接。
在目標方,由信道接收器(QMA.QMB)接收的消息在目標隊列管理器QMB 26的控制下被排隊到本地隊列Q1 28中。必須注意,源方的遠程隊列18不是真實的隊列,而是在目標機器中的本地隊列28的定義。然后,在隊列管理器QMB 26的控制下,由目標應用程序獲得(GET指令)放置到本地隊列28中的消息。
針對另一個方向,處理是相同的。由目標應用程序12將消息放置在遠程隊列Q2 30中,其中,該隊列30是源方的本地隊列Q2 32的定義。通過網絡14,將在傳送隊列QMA 34中所傳輸?shù)南男诺腊l(fā)送器(QMB.QMA)36傳送到信道接收器(QMB.QMA)38。
圖2示意性地示出了根據(jù)本發(fā)明的機制。如上所述,源應用程序將一個消息或幾個消息放置到遠程隊列18中。在源隊列管理器的控制下,將消息傳輸?shù)絺魉完犃?0中。當一個或幾個消息已被放置到傳送隊列20中時,由遠程隊列18將啟動消息放置到啟動隊列40中。信道啟動器41持續(xù)地監(jiān)控啟動隊列40,以便啟動消息信道代理(MCA)42,其負責觸發(fā)通過網絡14從信道發(fā)送器22傳送消息。注意,當將第一消息放置到傳送隊列中,或者每當將消息放置到傳送隊列時,或者當隊列包含指定數(shù)目的消息時,隊列管理器可以觸發(fā)MCA的啟動。
假定因為信道發(fā)送器和信道接收器之間的連接出故障,所以不能建立從信道發(fā)送器22的消息傳送,根據(jù)本發(fā)明的機制避免了消息被累積在傳送隊列中而不被傳送。為此,程序MCA一知道要被使用的信道的連接性,就將消息放置在事件隊列中。假定MCA檢測到該信道已經出故障,則在該信道上停止消息傳送的同時,將消息“信道已停止”放置到事件隊列44中。
由負責通常監(jiān)控啟動隊列的觸發(fā)監(jiān)控器46監(jiān)控事件隊列,以便調用在處理48中所指定的應用程序,并且檢索在本地隊列中所接收的消息。當由觸發(fā)監(jiān)控器46檢測到信道事件消息時,該觸發(fā)監(jiān)控器46調用通過GET指令等待通知的信道路由選擇任務50,例如后臺進程(daemon)。然后,該后臺任務激活有限狀態(tài)機52,其中,當主信道發(fā)送器是SDR1并且替換信道發(fā)送器是SDR2、SDR3和SDR4時,該有限狀態(tài)機52根據(jù)以下輸入來啟動各種操作。

根據(jù)按照這些輸入、信道發(fā)送器和類型而提供由有限狀態(tài)機52采取的操作的上表,當事件是“信道已啟動”并且類型是“正?!睍r,沒有操作。但是一旦信道被停止并且類型是異常,就要采取操作。如果正被停止的信道是主信道但類型是異常(該信道出故障),則要采取的操作是將信道發(fā)送器SDR1取路由到第一個可用的替換信道發(fā)送器,如SDR2、SDR3或SDR4。注意,當信道出故障時,這可能是由于鏈路、信道發(fā)送器、信道接收器、或其組合的故障。
參照圖3,假定信道出故障并且主信道發(fā)送器SDR1不可用。在這種情況下,在QM1 60中,從遠程隊列64接收消息的傳送隊列62不再通過使用SDR1來發(fā)送消息。假定在目標隊列管理器QM2 66中,主信道接收器RCVR1一直可用,在由SDR2和RCVR1對而非SDR1和RCVR1對定義的信道上發(fā)送消息。但是,正被接收的消息始終被放置到相同的本地或傳送隊列68中。
假定不但主信道發(fā)送器SDR1不可用,而且主信道接收器RCVR2可用,則有可能使用不同的信道發(fā)送器和信道接收器對,如SDR3和RCVR2對,以便在網絡14上發(fā)送消息。然而,在QM2中所接收的消息被放置到相同的本地或傳送隊列68中。
在圖3所示的可替換實施例中,通過使用中間隊列管理器QM3 70來執(zhí)行從QM1到QM2的消息傳送。在這種情況下,通過網絡14將在QM1的傳送隊列62中排隊的消息從信道發(fā)送器SDR4發(fā)送到QM3的信道接收器RCVR3。將所接收的消息放置到本地或傳送隊列72中。然后,在它們被放置到傳送隊列72中之前,將其傳輸?shù)竭h程隊列74中。必須注意,遠程隊列74不是真實的隊列,而是包含QM2中的本地或傳送隊列68的特征的結構。因此,對在QM2中從遠程隊列74傳輸?shù)絺魉完犃?2的消息進行格式化,以便將其轉發(fā)到QM2。如圖3所示,通過網絡14將消息從信道發(fā)送器SDR5發(fā)送到QM2的信道接收器RCVR2。
圖4示出了當投遞(post)了信道事件時,與由源隊列管理器執(zhí)行的步驟相對應的流程圖。首先,由被放置在事件隊列中的信道事件觸發(fā)信道路由選擇任務50(見圖2)(步驟76),其中在優(yōu)選實施例中該信道路由選擇任務是后臺進程。確定由該事件標識的信道是否是正在由系統(tǒng)監(jiān)控的信道(步驟78)。如果否,則該處理循環(huán)回到開頭。如果是,則確定信道事件是否是“信道已停止”(步驟80)。如果否,則該處理循環(huán)回到開頭。如果是,則確定被停止的信道是否是主信道(步驟82)。如果是,則確定是否存在可用于替換主信道的替換信道(步驟84)。如果否,則該處理循環(huán)回到開頭。
如果存在可以使用的替換信道,例如SDR2、SDR3或SDR4,則用主信道的傳送隊列名稱更新所選擇的替換信道的傳送隊列名稱。然后,用下次啟動信道時要使用的指定的序列號重設該信道的消息序列號(步驟88)。下次啟動該信道時,除了重設發(fā)出命令的一端的值之外,還將另一端的值重設為相同值。下一步驟包括禁用傳送隊列觸發(fā),并且禁止對相關傳送隊列的GET(獲得)操作(步驟90)。然后,用替換信道名稱,如SDR2,更新相關處理的數(shù)據(jù)(步驟92)。最后,在該處理循環(huán)回到開頭之前,重新啟用對傳送隊列的GET操作,并且啟用相關傳送隊列的觸發(fā)(步驟94)。
當確定被停止的信道不是主信道(步驟82)時,這意味著被停止的信道已經是替換信道。在這種情況下,在用原始主信道名稱更新相關處理的數(shù)據(jù),以便恢復初始配置(步驟98)之前,禁用傳送隊列觸發(fā)并且禁止GET操作(步驟96)。然后,如同主信道出故障的情況一樣,重設消息序列號(步驟100)。如前所述,下一步驟包括啟用GET操作并且啟用傳送隊列的觸發(fā)(步驟102)。然后,在循環(huán)回到該處理的開頭之前,清除替換信道的傳送隊列名稱,以便消除用于替換路由選擇的邏輯通信鏈路(步驟104)。
權利要求
1.一種用于在消息傳遞中間件系統(tǒng)中定義替換信道路由選擇機制的路由選擇系統(tǒng),其中,借助于消息隊列,通過傳送網絡(14)將消息從源應用程序(10)傳送到目標應用程序(12),這種消息傳遞中間件系統(tǒng)包括源隊列管理器(16),用于管理所述消息的發(fā)送;傳送隊列(20),由所述源應用程序將要被傳送的消息放置到其中;主信道(22,24),用于在所述傳送網絡上傳送所述消息;接收隊列(28),用于接收所述消息并且由所述目標應用程序從其獲得所述消息;目標隊列管理器(26),用于管理所述消息的接收;和事件隊列(44),有關所述主信道的事件被放置到所述事件隊列(44)中;所述系統(tǒng)的特征在于,其包括有限狀態(tài)機(52),用于接收信道事件作為激活輸入,并且針對每個所述信道事件提供要被采取的操作,其中所述操作之一是當所述主信道出故障時,在替換信道上傳送消息。
2.如權利要求1所述的路由選擇系統(tǒng),還包括觸發(fā)監(jiān)控器裝置(46),用于監(jiān)控所述事件隊列(44)并且調用信道路由選擇任務(50),每次在所述事件隊列中檢測到信道事件時,所述信道路由選擇任務(50)激活所述有限狀態(tài)機(52)。
3.如權利要求2所述的路由選擇系統(tǒng),其中,所述信道路由選擇任務(50)是后臺進程。
4.如權利要求1、2或3所述的路由選擇系統(tǒng),還包括中間隊列管理器(70),并且其中當所述主信道出故障時要被使用的替換信道是與所述源隊列管理器(60)相關聯(lián)的信道發(fā)送器和與所述中間隊列管理器相關聯(lián)的信道接收器之間的信道,自動地將由所述中間隊列管理器管理的傳送隊列所接收的所述消息傳送到與所述目標隊列管理器(66)相關聯(lián)的接收隊列。
5.如權利要求4所述的路由選擇系統(tǒng),其中在由所述中間隊列管理器管理的傳送隊列(72)中,從由所述源隊列管理器(60)管理的傳送隊列(62)接收的所述消息被放置到遠程隊列(74)中,其中所述遠程隊列(74)包含與所述目標隊列管理器(66)相關聯(lián)的接收隊列(68)相同的特征,然后才將所述消息放置到與所述中間隊列管理器相關聯(lián)的所述傳送隊列中,以便自動地將其傳送到與所述目標隊列管理器相關聯(lián)的所述接收隊列。
全文摘要
一種用于在消息傳遞中間件系統(tǒng)中定義替換信道路由選擇機制的路由選擇系統(tǒng),其中借助于消息隊列、通過傳送網絡(14)將消息從源應用程序(10)傳送到目標應用程序。通過傳送網絡在主信道上發(fā)送由源應用程序放置在傳送隊列(20)中的消息。在接收隊列中接收消息并且由目標應用程序從其獲得該消息。該系統(tǒng)包括有限狀態(tài)機(52),用于從事件隊列(44)接收與主信道相關聯(lián)的信道事件作為激活輸入,并且針對每個信道事件提供要被采取的操作,這些操作之一是當主信道出故障時,在替換信道上傳送消息。
文檔編號G06F9/46GK1817014SQ200480019328
公開日2006年8月9日 申請日期2004年3月25日 優(yōu)先權日2003年5月27日
發(fā)明者帕特里克·貝納德, 菲利普·法弗里 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1