/// <summary> /// 分布式缓存客户端开启 /// </summary> public static void Start() { //_cacheNameList = DistributedCacheManage.GetCacheNameList();//本节点的客户端缓存名列表和服务端缓存列表必须一致 //客户端订阅分布式缓存 SubscribeServiceObject ssObject = new SubscribeServiceObject(); ssObject.publishServiceName = publishServiceName; ssObject.ProcessService = ((ClientLink _clientLink) => { List <CacheIdentify> ciList = DistributedCacheClient.GetCacheIdentifyList(); //获取本地缓存索引 List <CacheObject> coList = _clientLink.GetDistributedCacheData(ciList); //比对上级中间件缓存,返回差异的缓存对象 if (coList.Count > 0) { //调试 //foreach (var i in coList) //{ // if(i.cachename== "mnodeplugin") // { // foreach(var n in i.cacheValue) // { // CoreFrame.Common.MiddlewareLogHelper.WriterLog(n.key); // CoreFrame.Common.MiddlewareLogHelper.WriterLog(n.value); // } // } //} DistributedCacheClient.SetCacheObjectList(coList);//将差异的缓存对象同步到本节点中间件 } }); SubscriberManager.Subscribe(ssObject); }
/// <summary> /// 订阅服务 /// </summary> /// <param name="ssObject"></param> public static void Subscribe(SubscribeServiceObject ssObject) { if (ssObject == null) { return; } if (ssoList.FindIndex(x => x.publishServiceName == ssObject.publishServiceName) == -1) { ServerManage.SuperClient.superClientLink.Subscribe(ssObject.publishServiceName); ssoList.Add(ssObject); } }
/// <summary> /// 取消订阅服务 /// </summary> /// <param name="publishServiceName"></param> public static void UnSubscribe(string publishServiceName) { if (string.IsNullOrEmpty(publishServiceName)) { return; } if (ssoList.FindIndex(x => x.publishServiceName == publishServiceName) == -1) { return; } ServerManage.SuperClient.superClientLink.UnSubscribe(publishServiceName); SubscribeServiceObject ssObject = ssoList.Find(x => x.publishServiceName == publishServiceName); ssoList.Remove(ssObject); }
/// <summary> /// 客户端接收通知 /// </summary> /// <param name="publishServiceName">订阅服务名称</param> /// <param name="_clientLink">客户端连接</param> public static void ReceiveNotify(string publishServiceName, ClientLink _clientLink) { ShowHostMsg(Color.Blue, DateTime.Now, "收到订阅的“" + publishServiceName + "”服务通知!"); if (ssoList.FindIndex(x => x.publishServiceName == publishServiceName) == -1) { return; } //执行订阅服务 SubscribeServiceObject ssObject = ssoList.Find(x => x.publishServiceName == publishServiceName); if (ssObject.ProcessService != null) { new Action(delegate() { //异步执行 ssObject.ProcessService(_clientLink); }).BeginInvoke(null, null); } }
private static string publishServiceName = "UpgradeManage";//订阅服务名 /// <summary> /// 分布式缓存客户端开启 /// </summary> public static void Start() { rootpath = AppGlobal.AppRootPath + "FileStore\\"; //创建客户端升级包目录 if (!Directory.Exists(rootpath + clientupgrade)) { Directory.CreateDirectory(rootpath + clientupgrade); } //创建Web程序升级包目录 if (!Directory.Exists(rootpath + webupgrade)) { Directory.CreateDirectory(rootpath + webupgrade); } //创建中间件程序升级包目录 if (!Directory.Exists(rootpath + mnodeupgrade)) { Directory.CreateDirectory(rootpath + mnodeupgrade); } //创建插件服务程序升级包目录 if (!Directory.Exists(rootpath + pluginupgrade)) { Directory.CreateDirectory(rootpath + pluginupgrade); } //客户端订阅分布式缓存 SubscribeServiceObject ssObject = new SubscribeServiceObject(); ssObject.publishServiceName = publishServiceName; ssObject.ProcessService = ((ClientLink _clientLink) => { //DownLoadUpgrade(clientupgrade + "update.xml", clientupgrade + "update.zip", _clientLink); //DownLoadUpgrade(webupgrade + "update.xml", webupgrade + "update.zip", _clientLink); //DownLoadUpgrade(mnodeupgrade + "update.xml", mnodeupgrade + "update.zip", _clientLink); //下载插件 //DownLoadPlugin(_clientLink); //UpgradeManage.UpdateUpgrade();//通知下级中间件升级 }); SubscriberManager.Subscribe(ssObject); }