All Downloads are FREE. Search and download functionalities are using the official Maven repository.

la.renzhen.rtpt.admin.source.consul.ConsulCenterConfigurationSource Maven / Gradle / Ivy

package la.renzhen.rtpt.admin.source.consul;

import com.alibaba.fastjson.JSON;
import com.ecwid.consul.v1.ConsistencyMode;
import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.QueryParams;
import com.ecwid.consul.v1.Response;
import com.ecwid.consul.v1.kv.model.GetValue;
import la.renzhen.rtpt.admin.source.CenterConfigurationSource;
import la.renzhen.rtpt.admin.source.ConfigElement;
import la.renzhen.rtpt.admin.util.Strings;
import lombok.NonNull;
import org.springframework.util.StringUtils;

import java.nio.charset.Charset;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 

* * @author haiker * @version 11/05/2018 4:50 PM */ public class ConsulCenterConfigurationSource implements CenterConfigurationSource { ConsulClient consulClient; String module; public ConsulCenterConfigurationSource(ConsulClient consulClient, String module) { this.consulClient = consulClient; this.module = module; } @Override public List environments() { String keyPrefix = module + "/"; QueryParams queryParams = QueryParams.Builder.builder().setConsistencyMode(ConsistencyMode.CONSISTENT).build(); Response> response = consulClient.getKVKeysOnly(keyPrefix, "/", null, queryParams); if (response.getValue() == null) { return Collections.emptyList(); } return response.getValue().stream().map(s -> Strings.sub(s, keyPrefix.length(), -1)).collect(Collectors.toList()); } @Override public List loadAll(@NonNull String environment, @NonNull String prefix) { Response> response = consulClient.getKVValues(key(environment, prefix)); if (response.getValue() == null) { return Collections.emptyList(); } return response.getValue() .stream() .map(s -> JSON.parseObject(s.getDecodedValue(Charset.forName("UTF-8")), ConfigElement.class)) .collect(Collectors.toList()); } @Override public ConfigElement get(@NonNull String environment, @NonNull String key) { Response response = consulClient.getKVValue(key(environment, key)); if (response.getValue() == null) { return null; } String content = response.getValue().getDecodedValue(Charset.forName("UTF-8")); return JSON.parseObject(content, ConfigElement.class); } @Override public void set(@NonNull ConfigElement item) { consulClient.setKVValue(key(item.getEnvironment(), item.getKey()), JSON.toJSONString(item)); } @Override public void del(@NonNull String environment, @NonNull String key) { consulClient.deleteKVValue(key(environment, key)); } protected String key(@NonNull String environment, @NonNull String key) { StringBuilder keys = new StringBuilder(module); keys.append("/"); keys.append(environment).append("/"); if (StringUtils.hasText(key)) { keys.append(key); } return keys.toString(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy