/// <summary> /// 关闭定时器 /// </summary> public static void Stop() { try { if (_mqTimer != null) { _mqTimer.Dispose(); _mqTimer = null; } } catch { // ignored } //关闭MQ LongRunRabbitConsumer.StopConsumer(); //关闭消息处理 RMqMessageHandler.Stop(); }
/// <summary> /// MQ回调 /// </summary> /// <param name="state"></param> private static void MqTimerCallBack(object state) { lock (Slocker) { if (_isRunning) { return; } _isRunning = true; } try { if (!LongRunRabbitConsumer.IsAlive()) { Thread.Sleep(5500); //延迟,使其能够自动恢复 if (!LongRunRabbitConsumer.IsAlive()) { if (_isFirstTimeToStartMq) { _isFirstTimeToStartMq = false; NLogHelper.Debug("首次尝试启动MQConsumer"); LongRunRabbitConsumer.StartConsumer(ex => { NLogHelper.Error($"开启MQ失败:{ex}"); }); } else { _restartCount++; if (_restartCount > 10000000) { _restartCount = 10000; } NLogHelper.Warn($"MQ异常,第{_restartCount}次尝试重启 MQConsumer"); LongRunRabbitConsumer.StartConsumer(ex => { NLogHelper.Error($"开启MQ失败:{ex}"); }); } } } else { NLogHelper.Trace("检测MQ连接正常"); } } catch (Exception ex) { NLogHelper.Error("MQ定时器异常:" + ex); } finally { lock (Slocker) { _isRunning = false; } } }