-
Notifications
You must be signed in to change notification settings - Fork 692
Java metaclientconfig
Roy edited this page Nov 6, 2017
·
10 revisions
本指南以1.4.5版本的java客户端为起点编写。
- 简单例子
- 消息
- 客户端配置
- 会话工厂MessageSessionFactory
- 发送消息MessageProducer
- 订阅消息MessageConsumer
- 遍历消息TopicBrowser
- Spring框架支持
- 高级主题
在创建生产者或者消费者之前,我们需要配置客户端,这都是通过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是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);