public Set<MessageQueue> fetchSubscribeMessageQueues(String topic) throws MQClientException {
        Set<MessageQueue> result = this.rebalanceImpl.getTopicSubscribeInfoTable().get(topic);
        if (null == result) {
            this.mQClientFactory.updateTopicRouteInfoFromNameServer(topic);
            result = this.rebalanceImpl.getTopicSubscribeInfoTable().get(topic);
        }

        if (null == result) {
            throw new MQClientException("The topic[" + topic + "] not exist", null);
        }

        return parseSubscribeMessageQueues(result);
    }
@Test
    public void testFetchSubscribeMessageQueues() throws MQClientException {
        Set<MessageQueue> actual = defaultMQPushConsumerImpl.fetchSubscribeMessageQueues(defaultTopic);
        assertNotNull(actual);
        Assert.assertEquals(1, actual.size());
        MessageQueue next = actual.iterator().next();
        assertEquals(defaultTopic, next.getTopic());
        assertEquals(defaultBroker, next.getBrokerName());
        assertEquals(0, next.getQueueId());
    }