public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest)
        {
            var request          = _binarySerializer.Deserialize <QueryConsumerInfoRequest>(remotingRequest.Body);
            var consumerInfoList = new List <ConsumerInfo>();

            if (!string.IsNullOrEmpty(request.GroupName))
            {
                var consumerGroups = _consumerManager.QueryConsumerGroup(request.GroupName);
                foreach (var consumerGroup in consumerGroups)
                {
                    foreach (var topicConsumeInfo in GetConsumerInfoForGroup(consumerGroup, request.Topic))
                    {
                        consumerInfoList.Add(topicConsumeInfo);
                    }
                }
            }
            else
            {
                var consumerGroups = _consumerManager.GetAllConsumerGroups();
                foreach (var consumerGroup in consumerGroups)
                {
                    foreach (var topicConsumeInfo in GetConsumerInfoForGroup(consumerGroup, request.Topic))
                    {
                        consumerInfoList.Add(topicConsumeInfo);
                    }
                }
            }

            return(RemotingResponseFactory.CreateResponse(remotingRequest, _binarySerializer.Serialize(consumerInfoList)));
        }
        public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest)
        {
            var request          = _binarySerializer.Deserialize <QueryConsumerInfoRequest>(remotingRequest.Body);
            var consumerInfoList = new List <ConsumerInfo>();

            if (!string.IsNullOrEmpty(request.GroupName))
            {
                var consumerGroups = _consumerManager.QueryConsumerGroup(request.GroupName);
                foreach (var consumerGroup in consumerGroups)
                {
                    foreach (var topicConsumeInfo in GetConsumerInfoForGroup(consumerGroup, request.Topic))
                    {
                        consumerInfoList.Add(topicConsumeInfo);
                    }
                }
            }
            else
            {
                var consumerGroups = _consumerManager.GetAllConsumerGroups();
                foreach (var consumerGroup in consumerGroups)
                {
                    foreach (var topicConsumeInfo in GetConsumerInfoForGroup(consumerGroup, request.Topic))
                    {
                        consumerInfoList.Add(topicConsumeInfo);
                    }
                }
            }

            var data = _binarySerializer.Serialize(consumerInfoList);

            return(new RemotingResponse((int)ResponseCode.Success, remotingRequest.Sequence, data));
        }
        public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest)
        {
            if (BrokerController.Instance.IsCleaning)
            {
                throw new BrokerCleanningException();
            }

            var request               = _binarySerializer.Deserialize <QueryConsumerInfoRequest>(remotingRequest.Body);
            var consumerInfoList      = new List <ConsumerInfo>();
            var consumerGroups        = default(IEnumerable <ConsumerGroup>);
            var allConsumerGroupNames = _offsetStore.GetAllConsumerGroupNames();

            if (!string.IsNullOrEmpty(request.GroupName))
            {
                consumerGroups = _consumerManager.QueryConsumerGroup(request.GroupName);
            }
            else
            {
                consumerGroups = _consumerManager.GetAllConsumerGroups();
            }

            var notEmptyConsumerGroups = _consumerManager.GetAllConsumerGroups().Where(x => x.GetConsumerCount() > 0);
            var emptyConsumerGroups    = allConsumerGroupNames.Where(x => notEmptyConsumerGroups.Count() == 0 || !notEmptyConsumerGroups.Any(y => y.GroupName == x));

            foreach (var groupName in emptyConsumerGroups)
            {
                consumerInfoList.Add(BuildConsumerInfoForEmptyGroup(groupName));
            }

            foreach (var consumerGroup in consumerGroups)
            {
                consumerInfoList.AddRange(GetConsumerInfoForGroup(consumerGroup, request.Topic));
            }

            return(RemotingResponseFactory.CreateResponse(remotingRequest, _binarySerializer.Serialize(consumerInfoList)));
        }