static void Main(string[] args) { try { string serverIp = ConfigurationManager.AppSettings["serverIp"]; int serverPort = int.Parse(ConfigurationManager.AppSettings["serverPort"]); TcpClient connectionSocket = new SocketService(IPAddress.Parse(serverIp), serverPort).EstablishConnection(); ListenerTask listenerTask = new ListenerTask(connectionSocket); DiskTask diskTask = new DiskTask("sqlservr"); MemoryTask memoryTask = new MemoryTask("sqlservr"); EventWaitHandle waitHandle = new AutoResetEvent(false); TaskPool taskPool = new TaskPoolBuilder() .SubmitCompositeTask(listenerTask) .SubmitCompositeTask(diskTask).Observe(listenerTask) //.SubmitCompositeTask(memoryTask).Observe(listenerTask) .OnReturn(delegate(List <IDataSet> dataSets, State state) { lock (dataSets) { if (state == State.FAILED) { Console.WriteLine("Query failed"); return; } else if (state == State.DEAD) { waitHandle.Set(); return; } string jsonReport = new TimeDataReportBuilder(GetTimeDataSets(dataSets)).GenerateJsonReport(); if (jsonReport.Length > 0) { jsonReport += "}"; } string jsonData = "{\"data\":[{},{" + jsonReport + "}]}"; NetworkStream stream = connectionSocket.GetStream(); stream.Write(Encoding.ASCII.GetBytes("lets get this thing started|" + jsonData)); if (state == State.RESET) { Console.WriteLine("Resetting monitor..."); } } }) .Build(); waitHandle.WaitOne(); Console.WriteLine("Recieved shutdown signal! shutting down..."); connectionSocket.Close(); } catch (Exception exception) { Console.WriteLine("Exception thrown when communicating with the server: " + exception.StackTrace); } }
public void Start() { OnInit("\r\n"); OnInit("\r\n"); OnInit("----------------------" + DateTime.Now + ":初始化节点开始-----------------------------------------"); try { OnInit("**开始请求节点配置信息**"); if (System.Configuration.ConfigurationSettings.AppSettings.AllKeys.Contains("NodeID")) { GlobalNodeConfig.NodeID = Convert.ToInt32(System.Configuration.ConfigurationSettings.AppSettings["NodeID"]); } // if (GlobalNodeConfig.NodeID <= 0)//string.IsNullOrWhiteSpace(GlobalNodeConfig.TaskDataBaseConnectString) || // { string url = GlobalNodeConfig.TaskManagerWebUrl.TrimEnd('/') + "/node/" + "loadnodeconfig/"; ResponseBase <LoadNodeConfigResponse> r = HttpClientHelper.PostResponse <ResponseBase <LoadNodeConfigResponse> >(url, JsonConvert.SerializeObject(new LoadNodeConfigRequest() { NodeId = GlobalNodeConfig.NodeID.ToString(), Source = Source.Node })); if (r.Status != ResponesStatus.Success) { //记录日志,并抛出异常 throw new Exception("请求" + url + "获取节点配置失败,服务端返回信息:" + JsonConvert.SerializeObject(r)); } //string connectstring = DESHelper.Decrypt(r.Data.ConnctionString, "ND.FluentTaskScheduling.", "1"); //if (string.IsNullOrWhiteSpace(GlobalNodeConfig.TaskDataBaseConnectString)) // GlobalNodeConfig.TaskDataBaseConnectString = connectstring; if (GlobalNodeConfig.NodeID <= 0) { GlobalNodeConfig.NodeID = r.Data.Node.id; } //初始化配置信息 OnInit("**请求节点配置信息完成,请求结果:" + JsonConvert.SerializeObject(r) + "**"); // } //初始化命令池 OnInit("**开启初始化节点命令池**"); ICommandPoolBuilder builder = new CommandPoolBuilder(); builder.BuildCommandPool(); builder.OnInitEvent += builder_OnInitEvent; OnInit("**初始化节点命令池完成:本地节点命令池数量:" + CommandPoolManager.CreateInstance().GetList().Count + "**"); OnInit("**开启异步请求命令队列初始化任务池线程**"); //初始化任务池 TaskPoolBuilder.RunBuildAsync();//异步初始化任务池 OnInit("**异步初始化任务池线程已开启**"); TaskPoolBuilder.OnInitTaskPoolEvent += TaskPoolBuilder_OnInitTaskPoolEvent;//记录初始化任务池事件 OnInit("**开始初始化监控线程**"); //初始化监控信息 OnInit("**监控线程已开启**"); OnInit("节点启动成功"); } catch (Exception ex) { OnInit("节点启动失败:" + JsonConvert.SerializeObject(ex)); } finally { OnInit("----------------------" + DateTime.Now + ":初始化节点结束-----------------------------------------"); } }