public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest)
        {
            var request = _binarySerializer.Deserialize <DeleteQueueRequest>(remotingRequest.Body);

            _queueStore.DeleteQueue(request.Topic, request.QueueId);
            return(RemotingResponseFactory.CreateResponse(remotingRequest));
        }
Example #2
0
        public void RemoveQueue(string topic, int queueId)
        {
            var   key = CreateQueueKey(topic, queueId);
            Queue queue;

            if (!_queueDict.TryGetValue(key, out queue))
            {
                return;
            }

            //检查队列状态是否是已禁用
            if (queue.Status != QueueStatus.Disabled)
            {
                throw new Exception("Queue status is not disabled, cannot be deleted.");
            }
            //检查是否有未消费完的消息
            if (queue.GetMessageRealCount() > 0L)
            {
                throw new Exception("Queue is not allowed to delete as there are messages exist in this queue.");
            }

            //删除队列消息
            _messageStore.DeleteQueueMessage(topic, queueId);

            //删除队列消费进度信息
            _offsetManager.DeleteQueueOffset(topic, queueId);

            //删除队列
            _queueStore.DeleteQueue(queue);

            //从内存移除队列
            _queueDict.Remove(key);
        }
Example #3
0
        public RemotingResponse HandleRequest(IRequestHandlerContext context, RemotingRequest remotingRequest)
        {
            if (BrokerController.Instance.IsCleaning)
            {
                throw new BrokerCleanningException();
            }
            var request = _binarySerializer.Deserialize <byte[], DeleteQueueRequest>(remotingRequest.Body);

            _queueStore.DeleteQueue(request.Topic, request.QueueId);
            return(RemotingResponseFactory.CreateResponse(remotingRequest));
        }