public async Task AddTenantListeners(string dataId, string group, List <IListener> listeners)
        {
            group = ParamUtils.Null2DefaultGroup(group);
            string tenant = _agent.GetTenant();

            CacheData cache = AddCacheDataIfAbsent(dataId, group, tenant);

            foreach (var listener in listeners)
            {
                cache.AddListener(listener);
            }

            if (!cache.IsListenSuccess)
            {
                await _agent.NotifyListenConfigAsync();
            }
        }
        internal async Task AddTenantListenersWithContent(string dataId, string group, string content, List <IListener> listeners)
        {
            group = ParamUtils.Null2DefaultGroup(group);
            string    tenant = _agent.GetTenant();
            CacheData cache  = AddCacheDataIfAbsent(dataId, group, tenant);

            cache.SetContent(content);
            foreach (var listener in listeners)
            {
                cache.AddListener(listener);
            }

            // if current cache is already at listening status,do not notify.
            if (!cache.IsListenSuccess)
            {
                await _agent.NotifyListenConfigAsync();
            }
        }