Jafka源碼粗略解讀之二--關於JMX

JMX

Jafka裏用到了JMX,以前也沒用過,迅速突擊了一下,感受仍是挺簡單的:html

有一篇文章用一個例子介紹JMX怎麼使用的,簡潔明瞭:http://www.javalobby.org/java/forums/t49130.html。就是聲明一個bean,而後在MBeanServer中加入這個bean:java

ApplicationCache cache = new ApplicationCache();
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName("org.javalobby.tnt.jmx:type=ApplicationCacheMBean");
    mbs.registerMBean(cache, name);

這裏ApplicationCache是個POJO,特殊的是它必須實現一個名爲*MBean的接口。至此,一個JMX調用就完成了。在JConsole裏鏈接,會找到對應方法。貌似setter和getter會被打包反射成一個field,其餘都是方法調用。git

JMX的設計卻是很是符合Java OO的思想,使用也還算簡潔,是個好東西。結構說明:http://pub.admc.com/howtos/jmx/architecture-chapt.htmlgithub

utils包

原本想從三大組件或者消息結構來看看Jafka的實現的,時間太零散,隨便翻到了utils包,發現也有些驚喜:工具

  • ImmutableMap是個頗有意思的Map初始化方式,使用static of(key,value)來初始化一個Map,卻是很好的彌補了Java初始化Map不便的問題。

這個utils裏多數是一些Java已有工具的簡單封裝,基本思路就是能用靜態方法的用靜態方法,把一些煩人的聲明式異常異常的就把轉化爲RuntimeException(例如最煩人且無用的UnsupportedEncodingException)。代碼實現比較精細,也是些通用工具,能夠拿來用用。磨刀不誤砍柴工,這樣的思路卻是深得我心。設計

相關文章
相關標籤/搜索