获取实例
2021-03-24 11:06:54 2 举报
davinci SDK业务流程图
作者其他创作
大纲/内容
false
new Thread(this::push).start();启动后台上报进程
emptyCount++;
初始化所有配置
判断实例INSTANCES大小是否大于最大实例大小?
判断集合properties是否为空?
if (msg != null)
changeEvent.changedKeys().forEach(key)->{}通过变化事件获取变化键key,遍历key
ConfigChange change = changeEvent.getChange(key)
true
发送数据到nsq
message.clear()清空message
public static TrackClient init(ClientConfigDTO dto)
Set<String> properties = config.getPropertyNames()获取配置name集合
调用对象的onChange()方法,添加配置变化监听器,当配置变化则调用processChangeEvent()方法
if(PropertyChangeType.DELETED == type || StriingUtils.isBlank(value)
遍历集合properties
通过ConfigService.getConfig(namespace);方法获取相应配置赋值给对象属性config
如果长时间没有获取数据,使进程睡眠
获取客户端实例,DavinciClient.getInstance(\"demo\");
this.clientConfig = getClientConfig()从阿波罗配置缓存获取 配置
初始化List<byte[]> messages = new ArrayList<>(); String topic = \"\"; int emptyCount = 0;
如果message大小超过每批次提交数据量,或者单次时间超过最大时间
调用父类构造器super(\"davinci.demo\
Stopwatch watch = Stopwatch.createStarted();开启Stopwatch计时
if(dto==null)抛出异常
davinci sdk业务流程
if (StringUtils.isBlank(dto.getNsqLookupAddress()))抛出异常
getNamespace(domain)davinci.demo以\"demo\"获取固定格式命名空间
while (this.running.get())
new Thread(this::monitorLog).start()创建上报监控日志线程
DavinciClient davinciClinent = new DavinciClient(domain传入\"demo\"创建新的DavinciClient实例
判断configKey是否为空?
双重检查单例模式,判断实例ConcurrentHashMap INSTANCES 是否包含key(\"demo\")?
List<byte[]> copy = new ArrayList<>(messages);
调用initConfig()方法
this.trackClient = TrackClient.init(this.clientConfig)初始化埋点客户端配置
flase
输出警告日志
InitConfigWithKey(String key)初始化cache
msg = doTake()从阻塞队列queue拉取数据
processChangeEvent(ConfigChangeEvent changeEvent)
if (!topic.equals(msg.getKey()) && messages.size() > 0)
this.domain = domain
返回对应实例
0 条评论
下一页
为你推荐
查看更多