Exemplo n.º 1
0
  private void createAndUpdateQueueData(final String brokerName, final TopicConfig topicConfig) {
    QueueData queueData = new QueueData();
    queueData.setBrokerName(brokerName);
    queueData.setWriteQueueNums(topicConfig.getWriteQueueNums());
    queueData.setReadQueueNums(topicConfig.getReadQueueNums());
    queueData.setPerm(topicConfig.getPerm());

    List<QueueData> queueDataList = this.topicQueueTable.get(topicConfig.getTopicName());
    if (null == queueDataList) {
      queueDataList = new LinkedList<QueueData>();
      queueDataList.add(queueData);
      this.topicQueueTable.put(topicConfig.getTopicName(), queueDataList);
      log.info("new topic registerd, {} {}", topicConfig.getTopicName(), queueData);
    } else {
      boolean addNewOne = true;

      Iterator<QueueData> it = queueDataList.iterator();
      while (it.hasNext()) {
        QueueData qd = it.next();
        if (qd.getBrokerName().equals(brokerName)) {
          if (qd.equals(queueData)) {
            addNewOne = false;
          } else {
            log.info(
                "topic changed, {} OLD: {} NEW: {}", topicConfig.getTopicName(), qd, queueData);
            it.remove();
          }
        }
      }

      if (addNewOne) {
        queueDataList.add(queueData);
      }
    }
  }