private void HeatbeatRun()
 {
     while (!cancelSource.IsCancellationRequested)
     {
         try
         {
             foreach (var context in Contexts.CopyToList())
             {
                 ProducterBLL bll = new ProducterBLL();
                 SqlHelper.ExcuteSql(context.ProducterProvider.Config.ManageConnectString, (c) =>
                 {
                     context.ManageServerTime = c.GetServerDate();//重新校准时间
                     bll.ProducterHeartbeat(c, context.ProducterInfo.ProducterModel.tempid, context.ProducterInfo.ProducterModel.mqpathid);
                 });
                 CheckMqPathUpdate(context);
             }
         }
         catch (Exception exp)
         {
             ErrorLogHelper.WriteLine(-1, "", "HeatbeatRun", "生产者心跳循环错误", exp);
         }
         System.Threading.Thread.Sleep(SystemParamConfig.Producter_HeatBeat_Every_Time * 1000);
         DebugHelper.WriteLine(-1, "", "HeatbeatRun", "生产者心跳循环一轮结束");
     }
 }