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)。代码实现比较精细,也是些通用工具,能够拿来用用。磨刀不误砍柴工,这样的思路却是深得我心。设计

相关文章
相关标签/搜索