public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest) { var request = _binarySerializer.Deserialize <QueryConsumerRequest>(remotingRequest.Body); var consumerGroup = _consumerManager.GetConsumerGroup(request.GroupName); var consumerIdList = new List <string>(); if (consumerGroup != null) { consumerIdList = consumerGroup.GetConsumerIdsForTopic(request.Topic).ToList(); consumerIdList.Sort(); } return(RemotingResponseFactory.CreateResponse(remotingRequest, Encoding.UTF8.GetBytes(string.Join(",", consumerIdList)))); }
public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest) { var request = _binarySerializer.Deserialize <QueryConsumerRequest>(remotingRequest.Body); var consumerGroup = _consumerManager.GetConsumerGroup(request.GroupName); var consumerIdList = new List <string>(); if (consumerGroup != null) { consumerIdList = consumerGroup.GetConsumerIdsForTopic(request.Topic).ToList(); consumerIdList.Sort(); } var consumerIds = string.Join(",", consumerIdList); var data = Encoding.UTF8.GetBytes(consumerIds); return(new RemotingResponse((int)ResponseCode.Success, remotingRequest.Sequence, data)); }
public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest) { var request = _binarySerializer.Deserialize <QueryTopicConsumeInfoRequest>(remotingRequest.Body); var topicConsumeInfoList = _offsetManager.QueryTopicConsumeInfos(request.GroupName, request.Topic).ToList().Where(x => _queueService.IsQueueExist(x.Topic, x.QueueId)).ToList(); topicConsumeInfoList.Sort((x, y) => { var result = string.Compare(x.ConsumerGroup, y.ConsumerGroup); if (result != 0) { return(result); } result = string.Compare(x.Topic, y.Topic); if (result != 0) { return(result); } if (x.QueueId > y.QueueId) { return(1); } else if (x.QueueId < y.QueueId) { return(-1); } return(0); }); foreach (var topicConsumeInfo in topicConsumeInfoList) { var consumerGroup = _consumerManager.GetConsumerGroup(topicConsumeInfo.ConsumerGroup); topicConsumeInfo.HasConsumer = consumerGroup != null && consumerGroup.GetAllConsumerIds().Count() > 0; var queueCurrentOffset = _queueService.GetQueueCurrentOffset(topicConsumeInfo.Topic, topicConsumeInfo.QueueId); topicConsumeInfo.QueueMaxOffset = queueCurrentOffset; topicConsumeInfo.UnConsumedMessageCount = topicConsumeInfo.QueueMaxOffset - topicConsumeInfo.ConsumedOffset; } var data = _binarySerializer.Serialize(topicConsumeInfoList); 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 <DeleteConsumerGroupRequest>(remotingRequest.Body); if (string.IsNullOrEmpty(request.GroupName)) { throw new ArgumentException("DeleteConsumerGroupRequest.GroupName cannot be null or empty."); } var consumerGroup = _consumerManager.GetConsumerGroup(request.GroupName); if (consumerGroup != null && consumerGroup.GetConsumerCount() > 0) { throw new Exception("Consumer group has consumer exist, not allowed to delete."); } var success = _offsetStore.DeleteConsumerGroup(request.GroupName); return(RemotingResponseFactory.CreateResponse(remotingRequest, Encoding.UTF8.GetBytes(success ? "1" : "0"))); }
private bool IsPullRequestValid(PullRequest pullRequest) { var consumerGroup = _consumerManager.GetConsumerGroup(pullRequest.PullMessageRequest.ConsumerGroup); return(consumerGroup != null && consumerGroup.IsConsumerActive(pullRequest.RequestHandlerContext.Connection.RemotingEndPoint.ToString())); }