2017-02-08 28 views

回答

1

雖然沒有退出命令,但對於每個使用者組的每個消息隊列,您可以使用提供的管理基礎結構查找客戶端。這裏是片段實現這一目標:

private Map<MessageQueue, String> getClientConnection(DefaultMQAdminExt defaultMQAdminExt, String groupName){ 
    Map<MessageQueue, String> results = new HashMap<MessageQueue, String>(); 
    try{ 
     ConsumerConnection consumerConnection = defaultMQAdminExt.examineConsumerConnectionInfo(groupName); 
     for (Connection connection : consumerConnection.getConnectionSet()){ 
      String clinetId = connection.getClientId(); 
      ConsumerRunningInfo consumerRunningInfo = defaultMQAdminExt.getConsumerRunningInfo(groupName, clinetId, false); 
      for(MessageQueue messageQueue : consumerRunningInfo.getMqTable().keySet()){ 
       results.put(messageQueue, clinetId + " " + connection.getClientAddr()); 
      } 
     } 
    }catch (Exception e){ 

    } 
    return results; 
} 

在你還沒有使用RocketMQ控制檯專案,請嘗試運行情況:https://github.com/rocketmq/rocketmq-console-ng

在Consumer選項卡,單擊「消費者詳細」按鈕,將看到如下消息隊列分配結果: Message queues allocation result

相關問題