public List<MessageQueue> fetchPublishMessageQueues(String topic) throws MQClientException {
        try {
            TopicRouteData topicRouteData = this.mQClientFactory.getMQClientAPIImpl().getTopicRouteInfoFromNameServer(topic, timeoutMillis);
            if (topicRouteData != null) {
                TopicPublishInfo topicPublishInfo = MQClientInstance.topicRouteData2TopicPublishInfo(topic, topicRouteData);
                if (topicPublishInfo != null && topicPublishInfo.ok()) {
                    return parsePublishMessageQueues(topicPublishInfo.getMessageQueueList());
                }
            }
        } catch (Exception e) {
            throw new MQClientException("Can not find Message Queue for this topic, " + topic, e);
        }

        throw new MQClientException("Unknow why, Can not find Message Queue for this topic, " + topic, null);
    }
@Test
    public void assertFetchPublishMessageQueues() throws MQClientException {
        List<MessageQueue> queueList = mqAdminImpl.fetchPublishMessageQueues(defaultTopic);
        assertNotNull(queueList);
        assertEquals(6, queueList.size());
        for (MessageQueue each : queueList) {
            assertEquals(defaultTopic, each.getTopic());
            assertEquals(defaultBroker, each.getBrokerName());
        }
    }