补充watchZk中节点更新的逻辑

This commit is contained in:
Wxx 2024-07-09 02:30:16 +08:00
parent a0b7918c7a
commit d00cd159d3
8 changed files with 91 additions and 29 deletions

View File

@ -27,6 +27,16 @@ public class serviceCache {
cache.put(serviceName,addressList); cache.put(serviceName,addressList);
} }
} }
//修改服务地址
public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){
if(cache.containsKey(serviceName)){
List<String> addressList=cache.get(serviceName);
addressList.remove(oldAddress);
addressList.add(newAddress);
}else {
System.out.println("修改失败,服务不存在");
}
}
//从缓存中取服务地址 //从缓存中取服务地址
public List<String> getServcieFromCache(String serviceName){ public List<String> getServcieFromCache(String serviceName){
if(!cache.containsKey(serviceName)) { if(!cache.containsKey(serviceName)) {

View File

@ -39,10 +39,7 @@ public class watchZK {
// 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据 // 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据
switch (type.name()) { switch (type.name()) {
case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件
//获取更新的节点的路径 String[] pathList= pasrePath(childData1);
String path=new String(childData1.getPath());
//按照格式 读取
String[] pathList= path.split("/");
if(pathList.length<=2) break; if(pathList.length<=2) break;
else { else {
String serviceName=pathList[1]; String serviceName=pathList[1];
@ -57,12 +54,13 @@ public class watchZK {
} else { } else {
System.out.println("节点第一次赋值!"); System.out.println("节点第一次赋值!");
} }
String[] oldPathList=pasrePath(childData);
String[] newPathList=pasrePath(childData1);
cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]);
System.out.println("修改后的数据: " + new String(childData1.getData())); System.out.println("修改后的数据: " + new String(childData1.getData()));
break; break;
case "NODE_DELETED": // 节点删除 case "NODE_DELETED": // 节点删除
String path_d=new String(childData.getPath()); String[] pathList_d= pasrePath(childData);
//按照格式 读取
String[] pathList_d= path_d.split("/");
if(pathList_d.length<=2) break; if(pathList_d.length<=2) break;
else { else {
String serviceName=pathList_d[1]; String serviceName=pathList_d[1];
@ -79,4 +77,11 @@ public class watchZK {
//开启监听 //开启监听
curatorCache.start(); curatorCache.start();
} }
//解析节点对应地址
public String[] pasrePath(ChildData childData){
//获取更新的节点的路径
String path=new String(childData.getPath());
//按照格式 读取
return path.split("/");
}
} }

View File

@ -30,6 +30,16 @@ public class serviceCache {
cache.put(serviceName,addressList); cache.put(serviceName,addressList);
} }
} }
//修改服务地址
public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){
if(cache.containsKey(serviceName)){
List<String> addressList=cache.get(serviceName);
addressList.remove(oldAddress);
addressList.add(newAddress);
}else {
System.out.println("修改失败,服务不存在");
}
}
//从缓存中取服务地址列表 //从缓存中取服务地址列表
public List<String> getServiceListFromCache(String serviceName){ public List<String> getServiceListFromCache(String serviceName){
if(!cache.containsKey(serviceName)) { if(!cache.containsKey(serviceName)) {

View File

@ -39,10 +39,7 @@ public class watchZK {
// 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据 // 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据
switch (type.name()) { switch (type.name()) {
case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件
//获取更新的节点的路径 String[] pathList= pasrePath(childData1);
String path=new String(childData1.getPath());
//按照格式 读取
String[] pathList= path.split("/");
if(pathList.length<=2) break; if(pathList.length<=2) break;
else { else {
String serviceName=pathList[1]; String serviceName=pathList[1];
@ -57,12 +54,13 @@ public class watchZK {
} else { } else {
System.out.println("节点第一次赋值!"); System.out.println("节点第一次赋值!");
} }
String[] oldPathList=pasrePath(childData);
String[] newPathList=pasrePath(childData1);
cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]);
System.out.println("修改后的数据: " + new String(childData1.getData())); System.out.println("修改后的数据: " + new String(childData1.getData()));
break; break;
case "NODE_DELETED": // 节点删除 case "NODE_DELETED": // 节点删除
String path_d=new String(childData.getPath()); String[] pathList_d= pasrePath(childData);
//按照格式 读取
String[] pathList_d= path_d.split("/");
if(pathList_d.length<=2) break; if(pathList_d.length<=2) break;
else { else {
String serviceName=pathList_d[1]; String serviceName=pathList_d[1];
@ -79,4 +77,11 @@ public class watchZK {
//开启监听 //开启监听
curatorCache.start(); curatorCache.start();
} }
//解析节点对应地址
public String[] pasrePath(ChildData childData){
//获取更新的节点的路径
String path=new String(childData.getPath());
//按照格式 读取
return path.split("/");
}
} }

View File

@ -27,6 +27,16 @@ public class serviceCache {
cache.put(serviceName,addressList); cache.put(serviceName,addressList);
} }
} }
//修改服务地址
public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){
if(cache.containsKey(serviceName)){
List<String> addressList=cache.get(serviceName);
addressList.remove(oldAddress);
addressList.add(newAddress);
}else {
System.out.println("修改失败,服务不存在");
}
}
//从缓存中取服务地址列表 //从缓存中取服务地址列表
public List<String> getServiceListFromCache(String serviceName){ public List<String> getServiceListFromCache(String serviceName){
if(!cache.containsKey(serviceName)) { if(!cache.containsKey(serviceName)) {

View File

@ -17,6 +17,7 @@ public class watchZK {
//本地缓存 //本地缓存
serviceCache cache; serviceCache cache;
public watchZK(CuratorFramework client,serviceCache cache){ public watchZK(CuratorFramework client,serviceCache cache){
this.client=client; this.client=client;
this.cache=cache; this.cache=cache;
@ -39,10 +40,7 @@ public class watchZK {
// 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据 // 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据
switch (type.name()) { switch (type.name()) {
case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件
//获取更新的节点的路径 String[] pathList= pasrePath(childData1);
String path=new String(childData1.getPath());
//按照格式 读取
String[] pathList= path.split("/");
if(pathList.length<=2) break; if(pathList.length<=2) break;
else { else {
String serviceName=pathList[1]; String serviceName=pathList[1];
@ -57,12 +55,13 @@ public class watchZK {
} else { } else {
System.out.println("节点第一次赋值!"); System.out.println("节点第一次赋值!");
} }
String[] oldPathList=pasrePath(childData);
String[] newPathList=pasrePath(childData1);
cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]);
System.out.println("修改后的数据: " + new String(childData1.getData())); System.out.println("修改后的数据: " + new String(childData1.getData()));
break; break;
case "NODE_DELETED": // 节点删除 case "NODE_DELETED": // 节点删除
String path_d=new String(childData.getPath()); String[] pathList_d= pasrePath(childData);
//按照格式 读取
String[] pathList_d= path_d.split("/");
if(pathList_d.length<=2) break; if(pathList_d.length<=2) break;
else { else {
String serviceName=pathList_d[1]; String serviceName=pathList_d[1];
@ -79,4 +78,11 @@ public class watchZK {
//开启监听 //开启监听
curatorCache.start(); curatorCache.start();
} }
//解析节点对应地址
public String[] pasrePath(ChildData childData){
//获取更新的节点的路径
String path=new String(childData.getPath());
//按照格式 读取
return path.split("/");
}
} }

View File

@ -27,6 +27,16 @@ public class serviceCache {
cache.put(serviceName,addressList); cache.put(serviceName,addressList);
} }
} }
//修改服务地址
public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){
if(cache.containsKey(serviceName)){
List<String> addressList=cache.get(serviceName);
addressList.remove(oldAddress);
addressList.add(newAddress);
}else {
System.out.println("修改失败,服务不存在");
}
}
//从缓存中取服务地址列表 //从缓存中取服务地址列表
public List<String> getServiceListFromCache(String serviceName){ public List<String> getServiceListFromCache(String serviceName){
if(!cache.containsKey(serviceName)) { if(!cache.containsKey(serviceName)) {

View File

@ -17,6 +17,7 @@ public class watchZK {
//本地缓存 //本地缓存
serviceCache cache; serviceCache cache;
public watchZK(CuratorFramework client,serviceCache cache){ public watchZK(CuratorFramework client,serviceCache cache){
this.client=client; this.client=client;
this.cache=cache; this.cache=cache;
@ -39,10 +40,7 @@ public class watchZK {
// 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据 // 节点创建时没有赋予值 create /curator/app1 只创建节点在这种情况下更新前节点的 data null获取不到更新前节点的数据
switch (type.name()) { switch (type.name()) {
case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件
//获取更新的节点的路径 String[] pathList= pasrePath(childData1);
String path=new String(childData1.getPath());
//按照格式 读取
String[] pathList= path.split("/");
if(pathList.length<=2) break; if(pathList.length<=2) break;
else { else {
String serviceName=pathList[1]; String serviceName=pathList[1];
@ -57,12 +55,13 @@ public class watchZK {
} else { } else {
System.out.println("节点第一次赋值!"); System.out.println("节点第一次赋值!");
} }
String[] oldPathList=pasrePath(childData);
String[] newPathList=pasrePath(childData1);
cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]);
System.out.println("修改后的数据: " + new String(childData1.getData())); System.out.println("修改后的数据: " + new String(childData1.getData()));
break; break;
case "NODE_DELETED": // 节点删除 case "NODE_DELETED": // 节点删除
String path_d=new String(childData.getPath()); String[] pathList_d= pasrePath(childData);
//按照格式 读取
String[] pathList_d= path_d.split("/");
if(pathList_d.length<=2) break; if(pathList_d.length<=2) break;
else { else {
String serviceName=pathList_d[1]; String serviceName=pathList_d[1];
@ -79,4 +78,11 @@ public class watchZK {
//开启监听 //开启监听
curatorCache.start(); curatorCache.start();
} }
//解析节点对应地址
public String[] pasrePath(ChildData childData){
//获取更新的节点的路径
String path=new String(childData.getPath());
//按照格式 读取
return path.split("/");
}
} }