[英]How to do JMX over JMS?
我需要增強分布式Java應用程序的JMX接口。 選擇JMX的原因是公開數據的簡單性。 這些分布式應用程序存在於連接到JMS服務器(activemq 5.7)(又連接到另一個JMS服務器以橋接2個網絡,也就是activemq 5.7)的幾台不同的計算機中。
我想做的是能夠從JMS網絡上的任何位置訪問各個服務器上的遠程JMX接口。 我將擁有完整的JMX訪問權限,就像通過常規RMI界面進行訪問一樣。 這意味着每種動作。
我知道我可以使用lingo來使遠程jmx接口與JMS服務器通信,並且從那里我的網橋應該允許我訪問它們(假設其配置正確)。
這是一個好方法嗎? 有人為此目的嘗試過術語嗎? 我可能還沒有找到其他選擇嗎?
計划B可能是使用apache駱駝RMI模塊,但似乎如果選擇了lingo,則即插即用的功能遠不止於此。
我認為這不是一個壞方法。 我想到的使用JMS的缺點之一就是對代理的依賴 ,而代理是大多數JMS實現所依賴的。
另一方面,它確實提供了一些有趣的功能,例如發現,異步JMX調用和pub / sub多播樣式的JMX操作,您可以在其中發出一個操作請求並從所有MBeanServer接收回響應。
我不知道任何實際的實現,但是實現起來可能不太困難。 您只需要在每個目標JVM上配置一個客戶機即可:
您還可以考慮實現完全成熟的javax.management.remote實現,該實現可以借助標准遵循而更平滑地集成到您的環境中。
我發現OpenDMK項目對於擴展/實現JMX服務器和客戶端非常有用。 該庫提供了使用“自定義”協議實現標准JMX遠程處理解決方案的基本構建塊。 基本上,您實現一個javax.management.remote.generic.MessageConnection ,它用作傳輸和調用機制。 所有JMX調用,響應和回調都被序列化為javax.management.remote.message.Message的實例,並且它們都是可序列化的,因此您將它們寫入JMS ObjectMessage或從中讀取它們應該沒有任何問題。
您將從這種方法中獲得的其他一些好處是:
如果您有興趣,我在這里發布了OpenDMK的項目。
我正在使用netty為Java代理實現基本的JMX客戶端,它可選地支持異步JMX請求。 響應是通過注冊的偵聽器傳遞的,就像“反向” MBeanServerConnection。 如果這很有用,請在此處查找源。
Jolokia(http://www.jolokia.org/)也是一個很棒的項目,用於使用REST和JSON遠程訪問JMX。 它會自動為您完成。 並支持批處理操作。 我建議看一看。
如果您使用JMX來獲取AMQ統計信息,那么它將提供一個插件,因此您可以使用JMS消息傳遞來獲取統計信息而不是JMX: http : //activemq.apache.org/statisticsplugin.html
從那時起,我將使用JMS來發現我感興趣的服務器的URL,並使用純JMX。 我沒有看到通過JMS發送每個RMI調用的好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.