JMX
Jafka里用到了JMX,之前也没用过,迅速突击了一下,感觉还是挺简单的:
有一篇文章用一个例子介绍JMX怎么使用的,简洁明了:http://www.javalobby.org/java/forums/t49130.html。就是声明一个bean,然后在MBeanServer中加入这个bean:
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,其他都是方法调用。
JMX的设计倒是非常符合Java OO的思想,使用也还算简洁,是个好东西。结构说明:http://pub.admc.com/howtos/jmx/architecture-chapt.html
utils包
本来想从三大组件或者消息结构来看看Jafka的实现的,时间太零散,随便翻到了utils
包,发现也有些惊喜:
ImmutableMap
是个很有意思的Map初始化方式,使用static of(key,value)来初始化一个Map,倒是很好的弥补了Java初始化Map不便的问题。
这个utils里多数是一些Java已有工具的简单封装,基本思路就是能用静态方法的用静态方法,把一些烦人的声明式异常异常的就把转化为RuntimeException(例如最烦人且无用的UnsupportedEncodingException
)。代码实现比较精细,也是些通用工具,可以拿来用用。磨刀不误砍柴工,这样的思路倒是深得我心。
来源:oschina
链接:https://my.oschina.net/u/190591/blog/152734