Hike News

彻底摆脱配置文件 八(使用maven-zkcu-plugin灵活控制zkconfigutil)

惯例,我们从使用上开始。

准备

首先,下载并构建maven-zkcu-plugin

这是一个maven工程,采用maven构建并install本地即可

详解

接下来我们主要看效果:
我有一个配置类,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
@TypeZkConfigurable
public class StaticClass {
@FieldZkConfigurable(dynamicUpdate = true)
public static String a = "hello world a";
@FieldZkConfigurable
public static String b = "hello world b";
@TypeZkConfigurable
public static class InClass{
@FieldZkConfigurable(dynamicUpdate = true)
public static String c = "hello world c";
}
}

接下来看下关键的,如何使用maven-zkcu-plugin,实现彻底摆脱配置文件,并又能灵活控制配置功能开关。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<plugin>
<groupId>com.jerry</groupId>
<artifactId>maven-zkcu-plugin</artifactId>
<version>0.1.1</version>
<configuration>
<zk>127.0.0.1:2181</zk>
<mainClass>com.jerry.testplugin.TestStatic</mainClass>
<zkConfigurableClass>
<parm>com.jerry.testplugin.StaticClass</parm>
<parm>com.jerry.testplugin.StaticClass$InClass</parm>
</zkConfigurableClass>
</configuration>
</plugin>

这里有几个参数,其中zk代表配置项保存在哪个zookeeper上;mainClass代表你的程序启动的主函数;zkConfigurableClass代表所有工程里需要配置的类,也就是添加了@TypeZkConfigurable注解的类

看看如何使用,在你工程pom文件所在目录下,执行

1
mvn clean compile zkcu:zkcu jar:jar

即可,强调下,zkcu必须在compile阶段之后执行,ok,现在你的服务已经有了zkconfigutil的功能。

有些时候,可能想关掉zkconfigutil,那么执行

1
mvn clean package

也就是去掉zkcu:zkcu即可。

特别强调下,zkcu这个plugin只能用户手动执行,无法被绑到某个maven生命周期上,这样做的目的是可能由用户控制zkconfigutil的开关。

总结

zkconfigutil采用注解的方式,实现了一个服务的配置项zookeeper化,增加dynamicUpdate = true,即可实现服务内部参数的动态更新,采用maven plugin方式,可以灵活在构建工程时控制是否使用zkconfigutil功能。 另外,如果不想将一些参数直接写在zkcu-plugin下面,也可以采用-D参数形式,为该plugin提供参数。


jerry于2015-04-17

北京

© 2017 jerry's blog All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero