Skip to content
This repository has been archived by the owner on Nov 24, 2018. It is now read-only.

客户端高级配置

hengyunabc edited this page May 1, 2016 · 2 revisions

高级配置

配置Listener,侦听配置修改事件

如果是@Service, @Component这样的bean,可以直接在一个函数上用@OneKeyListener或者@AllKeyListener来获取到最新的配置值。例如:

@Service
public class ListenerExampleService {

  @OneKeyListener(key = "testOneKeyListener")
  public void testOneKeyListener(ConfigEvent event) {
    System.err.println("ListenerExampleService, testOneKeyListener, event :" + event);
  }

  @AllKeyListener
  public void testAllKeyListener(ConfigEvent event) {
    System.err.println("ListenerExampleService, testAllKeyListener, event :" + event);
  }
}

ConfigEvent里,可以获取到一个key是新增/修改/删除的信息。用户可以自行处理。

具体的例子代码在xdiamond-client-example里。

把配置同步到system properties

bSyncToSystemProperties可以把配置同步到System Properties里,默认值是false。这样可以实现在*.properties文件里引用xdiamond里的配置。比如在一个test.properties文件里:

testKey=xxx${keyFromXdiamond}yyy
	<bean id="xDiamondConfig"
		class="io.github.xdiamond.client.spring.XDiamondConfigFactoryBean">
        ...
		<property name="bSyncToSystemProperties" value="true"></property>
	</bean>

注意,如果是一个Tomcat里跑多个war,小心打开这个配置。参考: http://wiki.apache.org/tomcat/HowTo#Can_I_set_Java_system_properties_differently_for_each_webapp.3F

设置连接重试的次数和时间

默认是会不断尝试重连服务器。在打印日志时已经做了优化,通常不需要改变设置。

	<bean id="xDiamondConfig"
		class="io.github.xdiamond.client.spring.XDiamondConfigFactoryBean">
        ...
		<!-- 以指数退避方式计算重连时间间隔 -->
		<property name="bBackOffRetryInterval" value="true"></property>
		<property name="retryIntervalSeconds" value="5"></property>
		<property name="maxRetryIntervalSeconds" value="120"></property>
		<!-- 默认会无限重试 -->
		<property name="maxRetryTimes" value=""></property>
	</bean>