public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest) { if (BrokerController.Instance.IsCleaning) { throw new BrokerCleanningException(); } var request = _binarySerializer.Deserialize <QueryTopicQueueInfoRequest>(remotingRequest.Body); var topicQueueInfoList = new List <TopicQueueInfo>(); var queues = _queueStore.QueryQueues(request.Topic).ToList().OrderBy(x => x.Topic).ThenBy(x => x.QueueId); foreach (var queue in queues) { var topicQueueInfo = new TopicQueueInfo(); topicQueueInfo.Topic = queue.Topic; topicQueueInfo.QueueId = queue.QueueId; topicQueueInfo.QueueCurrentOffset = queue.NextOffset - 1; topicQueueInfo.QueueMinOffset = queue.GetMinQueueOffset(); topicQueueInfo.QueueMinConsumedOffset = _offsetStore.GetMinConsumedOffset(queue.Topic, queue.QueueId); topicQueueInfo.ProducerVisible = queue.Setting.ProducerVisible; topicQueueInfo.ConsumerVisible = queue.Setting.ConsumerVisible; topicQueueInfoList.Add(topicQueueInfo); } return(RemotingResponseFactory.CreateResponse(remotingRequest, _binarySerializer.Serialize(topicQueueInfoList))); }