/// <summary> /// Cache subscriber for redo. /// </summary> /// <param name="serviceName">service name</param> /// <param name="groupName">group name</param> /// <param name="cluster">cluster</param> public void CacheSubscriberForRedo(string serviceName, string groupName, string cluster) { string key = ServiceInfo.GetKey(NamingUtils.GetGroupedName(serviceName, groupName), cluster); var redoData = SubscriberRedoData.Build(serviceName, groupName, cluster); _subscribes.AddOrUpdate(key, redoData, (x, y) => redoData); }
/// <summary> /// Build a new RedoData for subscribers. /// </summary> /// <param name="serviceName">service name for redo data</param> /// <param name="groupName">group name for redo data</param> /// <param name="clusters">clusters for redo data</param> /// <returns>new RedoData for subscribers</returns> public static SubscriberRedoData Build(string serviceName, string groupName, string clusters) { var result = new SubscriberRedoData(serviceName, groupName) { Data = clusters }; return(result); }
private async Task RedoForSubscribe(SubscriberRedoData redoData) { var redoType = redoData.GetRedoType(); string serviceName = redoData.ServiceName; string groupName = redoData.GroupName; string cluster = redoData.Data; _logger?.LogInformation("Redo subscriber operation {0} for {1}@@{2}#{3}", redoType, groupName, serviceName, cluster); switch (redoType) { case RedoType.REGISTER: if (IsClientDisabled()) { return; } await _clientProxy.DoSubscribe(serviceName, groupName, cluster).ConfigureAwait(false); break; case RedoType.UNREGISTER: if (IsClientDisabled()) { return; } await _clientProxy.DoUnsubscribe(serviceName, groupName, cluster).ConfigureAwait(false); break; case RedoType.REMOVE: _redoService.RemoveSubscriberForRedo(serviceName, groupName, cluster); break; default: break; } }