/// <summary> /// 2、查找出所有带监听服务,清理掉过期服务(返回过期服务的实例ID) /// </summary> private void VerifyListenService(ConcurrentDictionary <int, MqListenerService> services) { var temList = new List <int>(); //清理已经过期项 foreach (var mqListenerService in services) { MqListenerService service = mqListenerService.Value; if (service.IsRunning && service.ConnectionCheck()) { continue; } service.Stop(); temList.Add(mqListenerService.Key); ExcuteInfo info; _excuteInfoDictionary.TryRemove(service.ClientId, out info); if (info == null) { continue; } Logger.Information(string.Format("移除消息监听服务 ClientId:{0} Count:{1} size:{2}", service.ClientId, info.TotalCount, info.TotalSize)); } //移除已经停止的服务 foreach (var i in temList) { MqListenerService service; services.TryRemove(i, out service); } }
private void AddService(MqInstanceInfo instanceInfo) { if (!IsRunning) { return; } var service = new MqListenerService(_listenerAppId, instanceInfo); if (_serviceList.TryAdd(instanceInfo.MqInstanceId, service)) { service.QuqueDispatch += ServiceOnQuqueDispatch; service.TopicDispatch += ServiceOnTopicDispatch; service.Start(); _excuteInfoDictionary.TryAdd(service.ClientId, new ExcuteInfo()); } else { service.Dispose(); } }