2013-04-23 80 views
0

我有一系列的相互使用的JGroups庫通信的客戶端,他們基本上建立連接到羣集名稱的通信信道:JGroups的功能列出可用的組或集羣

communicationChannel = new JChannel(AutoDiscovery.class.getResource("/resource/udp.xml")); 
communicationChannel.connect("cluster1"); 

現在我想他們首先列出要連接的可用羣集,並讓用戶決定連接到哪個羣集,而不用硬連線代碼中的羣集名稱。 顯然,API有getName(),如果設置了返回通道的邏輯名稱,但沒有檢索設置集羣的方法。

我雖然使用org.jgroups.Message.getHeaders()並讀取標題將產生活動的集羣,但沒有。 請幫忙嗎?

回答

0

沒有辦法找到當前可用的羣集,我建議保留一些額外的狀態,它存儲(內存中)所有羣集名稱及其相關配置。

一旦你可以做的事情是開發一個自定義協議(插入它下面的GMS),它會做到以下幾點: - 追趕(Event evt):if evt.getType()== Event.CONNECT *** (4個事件),獲取集羣名稱((String)evt.getArg())並將其添加到集合中 - 捕獲(Event evt):if evt.getType()== Event.DISCONNECT,獲取當前集羣名稱並將其從集合中刪除

這不會給你配置信息;如果您繼承JChannel並覆蓋connectXXX()和disconnect(),您也可以獲得此信息。