EJB2.0系統中什麼時候使用messaging或者RMI/IIOP (轉)
2.0中什麼時候使用messaging或者/IIOP
以下幾條是messaging的優勢,和你需要去使用它的原因:
1.。如果你去完成一個關係型資料庫工作,如
對一個資料庫持久化一個定單,使用messaging更有優勢。
傳送一個訊息到一個二級訊息佇列去被晚些時候處理減輕了
在高峰時刻的主資料庫壓力。在早上負荷較低的早上,當
通訊量比較小時,你能在訊息佇列中取出並處理那個訊息
,並把定單插入到資料庫中。注意這只是在無論他的操
作成功與否都不需要馬上的回答時起作用,如檢測他的信用卡。
2.反應。一個客戶可能不想去被阻塞並去等待一個不存在的
反映。對於返回void值的方法,只可能什麼都不返回或返回一個
異常。如果客戶沒有預料會收到一個異常,為什麼非得要會被阻
塞得到一個反應?messaging允許客戶去處理其他事情,當他被
阻塞得到一個方法的返回。
3.平滑的負載平衡。message-driven beans比session和entity
bean更加平滑的分佈負載。用session和entity bean,一個負載
平衡演算法聰明的猜出哪一個負載更小。用messaging,負載
最小的伺服器自己請求message來得到那個message。
4.請求優先。非同步伺服器能排佇列,設定優先順序,並用與meaasge
到達系統不同的順序來處理它們。有一些訊息系統允許訊息按照
商業規則來被設定優先順序來被排序。舉個例子,在一個軍用坦克
中,如果所有的對系統的請求都被髮送到集中分發佇列來非同步,
那麼開炮的命令被排在100個通訊訊息之後可能帶來災難。在軍用
系統中,在通訊訊息前先處理開火控制和訊息將更有優勢。
一個設定了優先順序的佇列允許在佇列中的訊息重排來計算坦克中
開火控制的緊急性。
5.快速的集合分離的系統。許多已有系統是建立在面向訊息的中
間件之上的,並能夠很容易的用messaging來和你的系統互動。
messaging為商業處理和必須互相通訊的分散式節點系統提供一個
快速開發環境。
6.松耦合系統。messaging可以使應用之間鬆散耦合。應用程式
在他們被編譯時無需知道對方。這使你有“動態發現”的應用程式
,可能在快速變化、面向服務的商業環境下有用。
7.並行處理。messaging是一個在EJB釋出中使用偽執行緒的的方法。
你能啟動一系列訊息並繼續處理,和分散式的啟動許多執行緒一樣。
8.可靠性。messaging被使用即使伺服器當掉。系統級的錯誤(如
資料庫當掉了)通常不會影響操作的成功,因為訊息仍在佇列中
直到系統級的錯誤被解決。
9.多對多通訊。如果你有許多團體一起互相通訊,messaging是
合適的,因為它使許多生產者和消費者互相協作,而RMI/IIOP
是單源單目的的請求模型。
以下是你不應使用messaging的情況:
1.當你不確定操作是否成功。RMI/IIOP系統能丟擲異常,而
message-driven bean不行。
2.當你需要返回結果。RMI/IIOP系統能馬上返回結果,因為
請求是被立即的。相反,你能最終透過messaging返回結果,
不過這很讓人鬱悶:你需要傳送分隔的返回訊息,並用初始
的客戶端來它們。
3.當你的操作是一個更大的一個事務的一部分。當你向目的地
傳送一個訊息,接收到的message-driven bean不能處理其他的
訊息直到一個將來的事務。這對你需要這個操作是一個單獨的,
原子的,要處理其他操作的一個事務的一部分來說是不合適的。
舉個例子,當你操作一個銀行帳戶傳送,這時候使用RMI/IIOP
來向一個銀行帳戶存錢是個壞主意,用messaging來取錢也一樣,
因為取錢可能失敗。
4.當你需要把客戶的安全ID傳給伺服器。因為messaging不把
客戶的安全ID傳給接收的message-driven bean,你不能容易的
保證你的商業操作的安全性。
5.當你關心請求效能。messaging天生的比RMI/IIOP慢,因為
有一個在傳送者和接收者之間的中介人()。
6.當你需要一個強型別,OO的系統。你透過使用messaging
如JMS來傳送訊息。這是一個平滑的API而且不是面相的。
當你想要完成不同操作,伺服器需要開啟的訊息,或
把它濾掉。與之相比,RMI/IIOP讓你基於你想操作的商業操作
來不同的商業方法。這個更直覺;也更容易做編譯時的
語意檢查。
7.當你需要更緊密,更直接的系統。同步釋出比messaging
更直接。你有巨大的自由什麼時候傳送資料型別,和你需要寫
的和messaging比較最少的程式碼量。也更直接。當使用
完全同步的服務,每個客戶端控制執行緒有一個單獨的能被跟
蹤的從客戶端到伺服器的路徑,相反亦然。當系統有時,
需要跟蹤它們的努力也是最小的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003058/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EJB2.0中什麼時候用local interface,什麼時候用remote interface (轉)REM
- 什麼時候在EJB系統中使用XML (轉)XML
- 關於 Java 中的 RMI-IIOPJava
- 什麼是介面?為什麼使用介面? 什麼時候使用介面?(轉)
- 必須學習RMI,IIOP嗎??
- 什麼時候用linux系統多Linux
- C++中什麼時候用move,什麼時候用forward?C++Forward
- 鴻蒙系統什麼時候能用 鴻蒙系統有什麼特別之處鴻蒙
- java中RMI是什麼Java
- 企業什麼時候需要ERP系統?
- 到底什麼時候使用mqMQ
- python中什麼時候使用自定義類Python
- 在JavaScript中什麼時候使用==是正確的?JavaScript
- 什麼時候使用z-index?Index
- 什麼時候使用 Lambda 函式?函式
- 網管系統什麼時候能有命令列功能?命令列
- 在 JavaScript 中,什麼時候使用 Map 或勝過 ObjectJavaScriptObject
- 什麼時候用有狀態session bean,什麼時候用無狀態session bean (轉)SessionBean
- react中什麼使用定義變數,需要使用useRef,什麼時候直接定義即可?React變數
- MySQL什麼時候會使用內部臨時表?MySql
- 舉例說明你什麼時候會用抽象類,什麼時候更願意使用介面?抽象
- 什麼時候釋出
- 什麼時候呼叫layoutSubviewsView
- Java實用系統開發指南具體什麼時候出版Java
- 4 張動圖解釋為什麼(什麼時候)使用 Redux圖解Redux
- 天行健課堂 | 什麼時候使用SWOT分析?
- 什麼時候可以考慮使用MySQL MEMORY引擎MySql
- 什麼時候你不應該使用微服務微服務
- T-SQL什麼時候該使用分號SQL
- 區分import 什麼時候使用 花括號{ }Import
- springframe中的petstore中的setServlet()什麼時候呼叫SpringServlet
- 什麼時候採用socket通訊,什麼時候採用http通訊HTTP
- 企業應該在什麼時候做MSA(測量系統分析)?
- 新版什麼時候釋出?
- 什麼時候該用vuex?Vue
- 什麼時候該用MongoDB?MongoDB
- 什麼是遷移學習?什麼時候使用遷移學習?遷移學習
- 什麼時候你不能使用箭頭函式?函式