Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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;
            }
        }