package com.hqyg.disjob.java; import java.nio.charset.Charset; import java.util.Date; import java.util.List; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.CreateMode; import com.hqyg.disjob.java.service.LocalHostService; public class RpcJobTest { public static final String nameSpace = "ejob" ; public static final CuratorFramework client = CuratorFrameworkFactory .builder().connectString("10.32.1.245:2181").namespace(nameSpace).sessionTimeoutMs(3000) .retryPolicy(new ExponentialBackoffRetry(3000, 10)).build(); static{ client.start(); } public static void main(String[] args) throws Exception { for(int i=1;i<=20;i++){ createJob("global", "job_"+i); } client.close(); } public static void createJob(String group,String job) throws Exception{ String path = "/rpc/" + group + "/" + job ; //1、添加一个新的Job client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath(path,("a new job:"+new Date().toString()).getBytes(Charset.forName("utf-8"))); String ip = LocalHostService.getIp(); //2、创建 /ejob-dev/rpc/global/job/providers/ip:9501 这个数据节点,并写入需要调度的基本信息 String ipNode = path +"/providers/"+LocalHostService.getIp()+":9501"; //3、ejob://10.40.6.89:9501/test?serverGroup=oms&phpFilePath=/usr/local/php-test/TestService.php&className=TestService&methodName=test&version=1 StringBuffer sb = new StringBuffer(); sb.append("ejob://"); sb.append(ip+":9501/"); sb.append(job+"?"); sb.append("serverGroup="+group); sb.append("&"); sb.append("phpFilePath=''"); sb.append("&"); sb.append("className=globalgrow.local.job.PrintTimeJob"); sb.append("&"); sb.append("methodName=execute"); sb.append("&"); sb.append("version=1"); String data = sb.toString(); client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath(ipNode,data.getBytes(Charset.forName("utf-8"))); } @SuppressWarnings("unused") private static void getAllChilds() throws Exception { List<String> childNames = client.getChildren().forPath("/"); for(String name:childNames){ System.err.println(name); } } }