Skip to content

Java metaclientconfig

Roy edited this page Nov 6, 2017 · 10 revisions

本指南以1.4.5版本的java客户端为起点编写。

在创建生产者或者消费者之前,我们需要配置客户端,这都是通过com.taobao.metamorphosis.client.MetaClientConfig类。

属性

这个类最重要的几个属性如下:

  • zkConfig,zookeeper配置。到这里你应该清楚MetaQ是通过zookeeper来做服务的路由和查找。服务端将自己注册到zookeeper,而客户端连接到zookeeper,查找到服务端的信息,然后再跟服务端打交道(生产或者消费)。比喻来说,zookeeper类似电话本,你将信息写到电话本,下次无论什么时候都可以根据姓名找到你想找的电话号码。详细的ZkConfig配置参见下一小节。
  • recoverThreadCount,客户端后台恢复线程数,默认CPUS个。当一条消息重复消费多次还是失败,那么根据你配置的策略,这条消息可能被丢弃,也可能存入客户端的本地磁盘做恢复重试,这个参数设置恢复线程数。
  • recoverMessageIntervalInMills, 客户端后台恢复线程的恢复间隔,默认5分钟,单位毫秒。
  • 其他一些属性你基本不会用到。但是某些情况下,你可能想直接连接某个服务器,那么可以设置serverUrl这个属性,比如设置为meta://10.100.100.25:8120,这种情况下创建的客户端将只连接这台服务器。通常用于调试,测试或者监控。

这些属性都有相应的getter/setter方法来设置。

zkConfig配置

zkConfig是com.taobao.metamorphosis.utils.ZkUtils.ZKConfig类,它包括6个属性:

  • zkRoot, MetaQ服务端集群的根path,必须跟服务端配置保持一致,这就类似电话本里的姓名,姓名不对,你就找不到正确的电话号码。zkRoot不对,你也找不到正确的MetaQ服务端集群。
  • zkConnect, zookeeper集群地址列表,形如host:port,host:port的字符串。
  • zkSessionTimeoutMs, zookeeper客户端连接的最大超时时间,默认为30秒,单位毫秒,具体请看zookeeper关于session timeout的文档
  • zkConnectionTimeoutMs, 连接zk集群的最大超时时间,默认也是30秒,单位毫秒。
  • zkSyncTimeMs, zookeeper集群内的数据同步最大延迟,这个需要你去测量和估计,默认是5秒,单位毫秒。消费者在负载均衡失败后,会至少等待这么长时间再尝试。

典型配置代码

        final MetaClientConfig metaClientConfig = new MetaClientConfig();
        final ZKConfig zkConfig = new ZKConfig();
        zkConfig.zkConnect = "127.0.0.1:2181";
        zkConfig.zkRoot = "/meta";
        metaClientConfig.setZkConfig(zkConfig);
Clone this wiki locally