提供集群分片库名设置(又叫组Id,即groupId),可一次性设置或每次操作都设置。
如果对同一个库进行操作,可一次性设置。对于连接池的连接,需每次都设置。
集群分片库名设置,对于集群分片查询,是必选方法。库名是suffix去除dc=的部分。
例://程序开始时,初始化连接池的负载均衡配置,一次性设置这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 = 3890, connTimeout = 3; //连接超时时间3s;
String vhost = "127.0.0.1";
try {
//连接到指定的虚拟IP与端口(这里的127.0.0.1和3890是虚拟的,由负载均衡配置映射)
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;
}
//设置库名
try {
conn.setShardingGroupId("AB");
//......此处执行1到多次:设置分片值,执行查询
conn.setShardingValue("AB");
}catch (LDAPException ex) {
cp.close(conn);
//如果
cp.destroy();
return;
}
//实时手动刷新负载均衡配置,最好做到springboot的restful(control)接口,由url调用刷新
//rtn = ConnectionPool.updateLbServerInfo();
//if (rtn == false) {
//System.out.println("refresh lb config failed."); //打印信息
//cp.destroy();
//return;
//}
//程序退出时,销毁连接池(销毁连接,销毁刷新负载均衡配置的线程)
cp.destroy();