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)); }
public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest request) { var queryTopicConsumeInfoRequest = _binarySerializer.Deserialize<QueryTopicQueueInfoRequest>(request.Body); var topicQueueInfoList = new List<TopicQueueInfo>(); var topicList = !string.IsNullOrEmpty(queryTopicConsumeInfoRequest.Topic) ? new List<string> { queryTopicConsumeInfoRequest.Topic } : _messageService.GetAllTopics().ToList(); foreach (var topic in topicList) { var queues = _messageService.QueryQueues(topic).ToList(); foreach (var queue in queues) { var queueMinOffset = queue.GetMinQueueOffset(); var topicQueueInfo = new TopicQueueInfo(); topicQueueInfo.Topic = queue.Topic; topicQueueInfo.QueueId = queue.QueueId; topicQueueInfo.QueueCurrentOffset = queue.CurrentOffset; topicQueueInfo.QueueMinOffset = queueMinOffset != null ? queueMinOffset.Value : -1L; topicQueueInfo.QueueMessageCount = queue.GetMessageRealCount(); topicQueueInfo.QueueMaxConsumedOffset = _offsetManager.GetMinOffset(queue.Topic, queue.QueueId); topicQueueInfo.Status = queue.Status; topicQueueInfoList.Add(topicQueueInfo); } } var data = _binarySerializer.Serialize(topicQueueInfoList); return new RemotingResponse((int)ResponseCode.Success, request.Sequence, data); }
public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest) { var request = _binarySerializer.Deserialize<QueryTopicQueueInfoRequest>(remotingRequest.Body); var topicQueueInfoList = new List<TopicQueueInfo>(); var topicList = !string.IsNullOrEmpty(request.Topic) ? new List<string> { request.Topic } : _queueService.GetAllTopics().ToList(); foreach (var topic in topicList) { var queues = _queueService.QueryQueues(topic).ToList(); foreach (var queue in queues) { var topicQueueInfo = new TopicQueueInfo(); topicQueueInfo.Topic = queue.Topic; topicQueueInfo.QueueId = queue.QueueId; topicQueueInfo.QueueCurrentOffset = queue.CurrentOffset; topicQueueInfo.QueueMinOffset = queue.GetMinQueueOffset(); topicQueueInfo.QueueMessageCount = queue.GetMessageRealCount(); topicQueueInfo.QueueMaxConsumedOffset = _offsetManager.GetMinOffset(queue.Topic, queue.QueueId); topicQueueInfo.Status = queue.Status; topicQueueInfoList.Add(topicQueueInfo); } } return RemotingResponseFactory.CreateResponse(remotingRequest, _binarySerializer.Serialize(topicQueueInfoList)); }