czt недель назад: 2
Родитель
Сommit
a67bcb3b1c

+ 2 - 0
TimedUpload/Program.cs

@@ -28,6 +28,8 @@ namespace TimedUpload
             }
             catch (Exception ex)
             {
+                log4net.ILog logger = log4net.LogManager.GetLogger(typeof(Program));
+                logger.Error("服务启动失败:" + ex.Message, ex);
             }
             
         }

+ 48 - 34
TimedUpload/QuartzJobs/HanTingDataUploadJob.cs

@@ -14,47 +14,61 @@ namespace TimedUpload.QuartzJobs
     [DisallowConcurrentExecution]
     public class HanTingDataUploadJob:IJob
     {
-        private readonly ILog log = LogManager.GetLogger(typeof(DataUploadJob));
+        private readonly ILog log = LogManager.GetLogger(typeof(HanTingDataUploadJob));
 
         public void Execute(IJobExecutionContext context)
         {
-            string[] uploadUrls = Constants.HTUploadUrl.Split('|');
-            Dictionary<string, IConnection> connections = new Dictionary<string, IConnection>();
-            Dictionary<string, IModel> channels = new Dictionary<string, IModel>();
-            Dictionary<string, IBasicProperties> properties = new Dictionary<string, IBasicProperties>();
-
-            foreach (string uploadUrl in uploadUrls) 
+            log.Info("HanTing数据上传任务开始执行.................\r\n");
+            try
             {
-                ConnectionFactory factory = new ConnectionFactory();
-                factory.HostName = uploadUrl;//主机名,Rabbit会拿这个IP生成一个endpoint,这个很熟悉吧,就是socket绑定的那个终结点。
-                factory.UserName = Constants.HTUploadUserName;//默认用户名,用户可以在服务端自定义创建,有相关命令行
-                factory.Password = Constants.HTUploadPassword;//默认密码
+                string[] uploadUrls = Constants.HTUploadUrl.Split('|');
+                log.Info("准备连接RabbitMQ,地址:" + Constants.HTUploadUrl + ",端口:5672");
+                Dictionary<string, IConnection> connections = new Dictionary<string, IConnection>();
+                Dictionary<string, IModel> channels = new Dictionary<string, IModel>();
+                Dictionary<string, IBasicProperties> properties = new Dictionary<string, IBasicProperties>();
 
-                factory.AutomaticRecoveryEnabled = true; // 链接断开会自动重连
+                foreach (string uploadUrl in uploadUrls) 
+                {
+                    log.Info("正在连接RabbitMQ:" + uploadUrl + "...");
+                    ConnectionFactory factory = new ConnectionFactory();
+                    factory.HostName = uploadUrl;//主机名,Rabbit会拿这个IP生成一个endpoint,这个很熟悉吧,就是socket绑定的那个终结点。
+                    factory.UserName = Constants.HTUploadUserName;//默认用户名,用户可以在服务端自定义创建,有相关命令行
+                    factory.Password = Constants.HTUploadPassword;//默认密码
+                    factory.Port = 5672;
 
-                IConnection connection = factory.CreateConnection();
-                IModel channel = connection.CreateModel();
-                channel.QueueDeclare("zone.device", true, false, false, null);//创建一个名称为kibaqueue的消息队列
-                channel.QueueDeclare("zone.deviceHis", true, false, false, null);//创建一个名称为kibaqueue的消息队列
+                    factory.AutomaticRecoveryEnabled = true; // 链接断开会自动重连
 
-                IBasicProperties property = channel.CreateBasicProperties();
-                property.ContentType = "text/plain";
-                property.DeliveryMode = 2; //持久化
-                connections.Add(uploadUrl, connection);
-                properties.Add(uploadUrl, property);
-                channels.Add(uploadUrl, channel);
-            }
+                    IConnection connection = factory.CreateConnection();
+                    log.Info("RabbitMQ连接成功:" + uploadUrl);
+                    IModel channel = connection.CreateModel();
+                    channel.QueueDeclare("zone.device", true, false, false, null);//创建一个名称为kibaqueue的消息队列
+                    channel.QueueDeclare("zone.deviceHis", true, false, false, null);//创建一个名称为kibaqueue的消息队列
 
-            if (channels.Count > 0) 
-            {
-                SendZoneDevice(channels, properties);
-                SendZoneDeviceHis(channels, properties);
-            }
+                    IBasicProperties property = channel.CreateBasicProperties();
+                    property.ContentType = "text/plain";
+                    property.DeliveryMode = 2; //持久化
+                    connections.Add(uploadUrl, connection);
+                    properties.Add(uploadUrl, property);
+                    channels.Add(uploadUrl, channel);
+                }
 
-            foreach (KeyValuePair<string, IConnection> item in connections)
+                if (channels.Count > 0) 
+                {
+                    //SendZoneDevice(channels, properties);
+                    log.Info("开始执行历史数据同步...");
+                    SendZoneDeviceHis(channels, properties);
+                }
+
+                foreach (KeyValuePair<string, IConnection> item in connections)
+                {
+                    IConnection connection = item.Value;
+                    connection.Close();
+                }
+                log.Info("HanTing数据上传任务执行结束.................\r\n");
+            }
+            catch (Exception ex)
             {
-                IConnection connection = item.Value;
-                connection.Close();
+                log.Error("HanTing数据上传任务执行错误:" + ex.Message + "===========\r\n" + ex.StackTrace);
             }
         }
 
@@ -164,7 +178,7 @@ namespace TimedUpload.QuartzJobs
                 //arguments["x-overflow"] = "reject-publish";
 
                 Dictionary<String, String> uploadHis = new Dictionary<string, string>();
-                using (StreamReader sr = new StreamReader(@"TextFileHanting.txt"))
+                using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "TextFileHanting.txt"))
                 {
                     String line = "";
                     while ((line = sr.ReadLine()) != null)
@@ -310,12 +324,12 @@ namespace TimedUpload.QuartzJobs
         private void SavaUploadHis(Dictionary<String,String> uploadHis)
         {
             // 清除之前的内容
-            FileStream stream = File.Open(@"TextFileHanting.txt", FileMode.OpenOrCreate, FileAccess.Write);
+            FileStream stream = File.Open(AppDomain.CurrentDomain.BaseDirectory + "TextFileHanting.txt", FileMode.OpenOrCreate, FileAccess.Write);
             stream.Seek(0, SeekOrigin.Begin);
             stream.SetLength(0);
             stream.Close();
 
-            using (StreamWriter sw = new StreamWriter(@"TextFileHanting.txt"))
+            using (StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "TextFileHanting.txt"))
             {
                 foreach (var item in uploadHis)
                 {

+ 17 - 3
TimedUpload/ServiceRunner.cs

@@ -1,4 +1,5 @@
-using Quartz;
+using log4net;
+using Quartz;
 using Quartz.Impl;
 using System;
 using System.Collections.Generic;
@@ -10,17 +11,30 @@ namespace TimedUpload
 {
     public class ServiceRunner : ServiceControl, ServiceSuspend
     {
+        private readonly ILog log = LogManager.GetLogger(typeof(ServiceRunner));
         private readonly IScheduler scheduler;
 
         public ServiceRunner()
         {
+            log.Info("正在初始化Quartz调度器...");
             scheduler = StdSchedulerFactory.GetDefaultScheduler();
+            log.Info("Quartz调度器初始化完成");
         }
 
         public bool Start(HostControl hostControl)
         {
-            scheduler.Start();
-            return true;
+            try
+            {
+                log.Info("服务正在启动,启动Quartz调度器...");
+                scheduler.Start();
+                log.Info("Quartz调度器启动成功,服务已启动。");
+                return true;
+            }
+            catch (Exception ex)
+            {
+                log.Error("服务启动失败:" + ex.Message, ex);
+                return false;
+            }
         }
 
         public bool Stop(HostControl hostControl)

+ 2 - 2
TimedUpload/app.config

@@ -34,7 +34,7 @@
     <add key="SecondaryPumpColumn" value="PumpCode,ReadTime,Frequency,Current,RunState,Power,Voltage" />
 
 
-    <add key="ServiceName" value="二供和水厂同步智慧水务系统" />
+    <add key="ServiceName" value="寒亭大表rabbitmq同步智慧水务系统" />
     <!-- 和同智慧水务系统RabbitMQ信息 start -->
     <add key="DbMySQL" value="data source=182.92.149.41;database=smartwater;user id=root;password=wwkj@2136807;pooling=false;charset=utf8" />
     <add key="UploadUrlHeTong" value="47.104.100.143" />
@@ -47,7 +47,7 @@
 	  <!-- 寒亭智慧水务系统RabbitMQ信息 start -->
 	  <add key="HTDbConncetion" value="Data Source=123.56.196.68;Initial Catalog=通用大表4;uid=sa;password=wwkj@2136816" />
 	  <add key="HTUploadUrl" value="222.132.16.187" />
-	  <add key="HTUploadPortHeTong" value="5672" />
+	  <add key="HTUploadPort" value="5672" />
 	  <add key="HTUploadUserName" value="wwkj" />
 	  <add key="HTUploadPassword" value="wwkj123!" />
 	  <add key="HanTingManageId" value="212"/>