设置参与操作数据的分片属性的值(目前是16进制数字字符的后4字符)。
集群分片值设置,用于查询操作中发送给集群XDM端进行片号计算用。
例://程序开始时,初始化连接池的负载均衡配置,一次性设置这2个文件的路径
ParseServerParam.m_configFile = "./server.json"; //设置 2个配置服务器的连接配置文件
ParseFileConfig.m_configFile = "./lbconfig_file.json"; //设置 本地负载均衡配置文件
int refreshInterval = 24 * 3600; //second,设置为1天,代表1天刷新1次负载均衡配置
int lbConnTimeout = 3; //second,网络好,可以设置为0,网络不好建议设置为1到3
//ConnectionPool.setLbDebugFlag(true); //设置负载均衡调试标记
boolean rtn = ConnectionPool.setLbInitParam(refreshInterval, lbConnTimeout);
if (!rtn) {
System.out.println("lb init failed.");
return;
}
ConnectionPool cp = null; //声明连接池对象;
int min = 30, max = 100, vport = 1234, connTimeout = 3; //连接超时时间3s;
String vhost = "127.0.0.1";
try {
//连接到指定的虚拟IP与端口(这里的127.0.0.1和1234是虚拟的,由负载均衡配置映射)
cp = new ConnectionPool(min, max, vhost, vport, connTimeout);
//设置集群分片标记
cp.setShardingFlag(true);
}ctach (LDAPException ex)
{
System.out.println("connpool init error code is: " + ex.getLDAPResultCode()); //打印返回码
return;
}
//从连接池获取连接(已连接到映射的实际ip和端口)并做查询操作
LDAPConnection conn = cp.getConnection();
if (conn == null) {
System.out.println("connpool can not get valid conn.");
cp.destroy();
return;
}
LDAPSearchResults res = null;
String[] attrs = null; //返回全部用户属性
//String[] attrs = new String[]{"sn","idname"}; //返回sn和idname属性
//设置库名
try {
conn.setShardingGroupId("AB");
}catch (LDAPException ex) { }
//......此处可多次执行:设置分片值,并执行查询search
try {
conn.setShardingValue("1234");
res = conn.search ( "dc=A1", LDAPv3.SCOPE_SUB, "(sn=1234)", attrs, false, lsc);
}catch (LDAPException ex) {
//出错处理,可能有连接错误:91,81;参数错误:89;集群节点错误:52
......
}
cp.close(conn);
//实时手动刷新负载均衡配置,最好做到springboot的restful(control)接口,由url调用刷新
//rtn = ConnectionPool.updateLbServerInfo();
//if (rtn == false) {
//System.out.println("refresh lb config failed."); //打印信息
//cp.destroy();
//return;
//}
//程序退出时,销毁连接池(销毁连接,销毁刷新负载均衡配置的线程)
cp.destroy();