TIBCO Enterprise Message Service功能介紹

TIBCO Enterprise Message Service功能介紹

Java Message Service 1.1(JMS)是用來定義應用之間消息傳遞的Java框架規範。Sun公司與TIBCO公司等多家公司合作開發了這個規範,用來定義企業應用之間統一的消息傳遞接口。

消息傳遞服務用來集成企業內部的應用。例如,您可能擁有多個應用系統:一個是客戶關係管理、一個是產品庫存管理,另外一個是生產物料跟蹤系統。每個應用系統對於企業運營都非常關鍵,但是更爲重要的是系統之間的溝通以實現業務流程的平滑流轉。面向消息的中間件(Message-oriented-middleware, MOM)爲應用之間的通信創建了統一的通信協議,幫助使用者更加方便地實現企業計算環境中已有應用和新增應用的集成。

JMS框架定義的是接口規範,而不是具體的實現,因此JMS只是爲消息中間件的開發提供了基礎,TIBCO公司的產品TIBCO Enterprise Message Service就是JMS標準規範的實現。以下我們將描述JMS的概念和TIBCO Enterprise Message Service的實現。

JMS消息傳遞模型
JMS基於消息的創建和傳遞。“消息”是一個應用發送給另外一個應用的結構化數據。消息的創建者稱爲“生產者(producer)”,而消息的接收方稱爲“使用者(comsumer)”。TIBCO Enterprise Message Service作爲消息傳遞的中介,把消 息送給正確的目的地。而且產品本身提供了企業級的特性,如容錯、消息路由等,並可以與其他消息中間件如TIBCO Rendezvous進行通信。

JMS支持兩種消息傳遞模型:
 點對點(Point-to-point,queues
 發佈/訂閱(Publish and subscribe ,topics

點對點
點對點消息傳遞模式中,每個消息有一個生產者和一個使用者。這種消息傳遞方式使用“隊列”來存儲消息,一直到消息被接收到爲止。消息的生產者把消息送給隊列,消息使用者從隊列中取出消息,併發送消息已經收到的確認信息。
 
可以有多個消息生產者向同一個隊列發送消息,也可以有多個消息使用者從同一個隊列中取消息。如果需要的話,可以把隊列配置成“排他的”,如果把隊列配置爲“排他隊列”,則所有的隊列消息只能被指定該隊列的第一個使用者取出。排他隊列適用於僅僅需要一個應用從一個隊列中取出消息的時候。如果隊列是非排他的,則任意多的接收者可以從隊列中取出消息,這種方式適用於需要在多個消息接收者之間進行負載均衡的情況。無論隊列是排他的還是非排他的,隊列中的每條消息,只有一個使用者可以從中取出消息。

 
發佈/訂閱
在發佈/訂閱的消息傳遞模式下,消息生產者使用“主題(topic)”標記消息,這種模式中,生產者稱爲“發佈者”而使用者則稱爲“訂閱者”。
 
多個發佈者可以使用相同的主題發佈消息,從一個發佈者發佈的消息可以被多個訂閱者接收。訂閱者訂閱某個主題的消息,所有使用這個主題發佈的消息都可以被所有訂閱這個主題的訂閱者收到。由於這些消息在網絡上面傳遞並可以被所有感興趣的訂閱者所接收,非常類似於生活中的無線電或電視信號的傳播,因此這種方式通常也稱爲“廣播式消息傳遞”。
 
在發佈/訂閱模型中存在着一種時間依賴性。在缺省情況下,訂閱者只有在活動狀態時才能夠收到消息,如果在消息發送出來的時候訂閱者處於不可用狀態時,它收不到這個消息。JMS的API中定義了一個方法來部分消除這種時間依賴:允許把訂閱者創建爲“持久訂閱型”,這時候所有持久訂閱的消息存儲在服務器上,直到這些消息過期或者達到服務器上存儲限制。持久訂閱可以保證,即使在消息發佈出來時訂閱者處於不可用狀態,其也可以收到這條消息。
目的地的橋接
此外,可以在不同的目的地之間定義橋接的方式,結合使用以上兩種消息傳遞模式。如果應用需要把同一個消息發送到隊列中並同時按照主題進行發佈的時候,可以採用這種方法。
控制消息的流向
當消息生產者產生的消息的速度大大超過消息使用者接受消息的速度的時候,可以在服務器中控制消息的流量。
隊列的性能特性
如果想提高性能,可以定義隊列接收者能夠在後臺接受批量消息。或者,如果能夠保證沒有任何隊列接收者在同一時刻接受超過一條的消息,可以定義隊列接收者在同一時刻只能接受一條消息。
其他的隊列和主題特性
TIBCO Enterprise Message Service爲主題或者隊列定義一些參數來增強兩種消息傳遞模式的功能。消息目的地在創建的時候可以指定這些參數。增強的功能參數包括:
 錯誤恢復模式:可以把消息同步寫道磁盤上面來保證其時出現服務器錯誤的情況下仍然不丟失信息。
 強制權限控制:可以在隊列或者主題層面定義權限,這樣消息的目的地可以允許進行權限控制
 可以設置存儲在隊列中的消息的大小,如果接受者長時間無法接收消息,隊列中的消息會積壓並耗費機器資源影響性能。
 可以限制持久訂閱中消息的大小,如果訂閱者長時間無法接收消息,主體消息會積壓並消耗機器資源。
 發送到目標地點的消息可以路由到其他服務器上
 隊列可以接收到TIBCO Rendezvous消息,而主題可以發送或者接受TIBCO Rendezvous消息
 可以把隊列設置成排他或非排他。如果設置爲排他隊列,只有一個接收者收到消息,如果設置爲非排他,則可以有多個接收者從隊列接收消息。
 隊列可以設置重新傳輸政策,如果某條消息需要重新傳送,可以在隊列參數中設定每條消息重新傳輸的最大次數。
 所有發送到某目的地的消息可以被記載和跟蹤
 消息產生者的用戶名稱可以包含在發佈的消息中
 TIBCO Enterprise Message Service中可以使用帶有通配符的目的地,所有匹配通配符的目的地名稱都使用相同的特性。
 
容錯
TIBCO Enterprise Message Service可以配置爲一個成組的、主/從的容錯模式,每個主服務器/次服務器組對中,主服務器接受客戶端的連接並執行相應的消息傳遞功能,次服務器作爲錯誤情況下的備份。主/次服務器容錯對之間必須有物理或邏輯上的共享持久存儲。例如,物理共享可能是基於共享的磁盤系統,而邏輯上面的共享可能是基於複製軟件。客戶端的應用正常情況連接主服務器,在主服務器出現錯誤的情況下自動連接次服務器。
 

TIBCO Enterprise Message Service的特色在於添加次服務器不會大幅度影響主服務器的消息處理性能。
服務器路由
TIBCO Enterprise Message Service可以實現多個JMS服務器之間的消息路由功能。基於主題的消息可以進行多步路由,而基於隊列的消息最多可以從擁有該隊列的服務器上面進行一個路由到其他服務器。TIBCO Enterprise Message Service服務器會存儲——轉發消息,這樣在絕大多數情況下即使配置的路由連接中斷重啓後仍然能夠工作。
 
JMS路由器使用管理界面進行配置,路由器在一個服務器上面配置,可以進行雙向的通信。如果定義了兩個服務器之間的路由,無論在那個服務器上面配置,兩個服務器之間的消息都可以進行雙向傳遞。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章