Jafka源码粗略解读之二--关于JMX

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

你可能感兴趣的:(jmx,jafka,utils)