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
原本想从三大组件或者消息结构来看看Jafka的实现的,时间太零散,随便翻到了utils
包,发现也有些惊喜:工具
ImmutableMap
是个颇有意思的Map初始化方式,使用static of(key,value)来初始化一个Map,却是很好的弥补了Java初始化Map不便的问题。这个utils里多数是一些Java已有工具的简单封装,基本思路就是能用静态方法的用静态方法,把一些烦人的声明式异常异常的就把转化为RuntimeException(例如最烦人且无用的UnsupportedEncodingException
)。代码实现比较精细,也是些通用工具,能够拿来用用。磨刀不误砍柴工,这样的思路却是深得我心。设计