All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.joyqueue.service.BrokerMonitorService Maven / Gradle / Ivy

/**
 * Copyright 2019 The JoyQueue Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.joyqueue.service;


import org.joyqueue.manage.PartitionGroupPosition;
import org.joyqueue.model.BrokerMetadata;
import org.joyqueue.model.domain.Broker;
import org.joyqueue.model.domain.BrokerClient;
import org.joyqueue.model.domain.BrokerMonitorRecord;
import org.joyqueue.model.domain.ConnectionMonitorInfoWithIp;
import org.joyqueue.model.domain.Subscribe;
import org.joyqueue.monitor.ArchiveMonitorInfo;

import java.util.List;

/**
 *
 * consider more than one partition group on same broker for a topic
 * and leader change among partition group broker cluster
 *
 * @author wangjin18
 *
 **/
public interface BrokerMonitorService {


    /**
     * Find monitor info of a producer or consumer 汇总信息
     * @param subscribe consumer or producer subscribe info
     * @return a monitor record
     **/
    BrokerMonitorRecord find(Subscribe subscribe);


    /**
     * Find monitor info of a producer or consumer 汇总信息
     * @param subscribe consumer or producer subscribe info
     * @param active   if true , only contain leader partition group of this subscribe on the broker right now,which excluding
     *                 case of  the broker isn't partition group'leader but still remaining monitor info,such as enqueue and dequeun
     * @return a monitor record
     **/
    BrokerMonitorRecord find(Subscribe subscribe, boolean active);

    /**
     *
     * @param subscribe consumer or producer subscribe info
     * @return a monitor record list contain statistics info on each broker for topic and app
     * @see
     **/
    List findMonitorOnBroker(Subscribe subscribe);


    /**
     * @return  topic and app 的生产或者消费客户端client 信息 和broker ip:port
     *
     **/
    List findClients(Subscribe subscribe);


    /**
     *
     * @return  每个partition的的监控消费或者生产监控 or null,sorted by partition
     * null 表示当前 该partition没有监控数据,一般是新建的生产或者消费关系,没有开始生产或者消费
     *
     **/
    List findMonitorOnPartition(Subscribe subscribe);


    /**
     *
     * @param partitionGroup
     * @return  partition group 所在broker下每个 @code subscribe 所有partition的的监控消费或者生产监控 or null,sorted by partition
     * null 表示当前 该partition没有监控数据,一般是新建的生产或者消费关系,没有开始生产或者消费
     *
     *
     **/
    List findMonitorOnPartition(Subscribe subscribe, int partitionGroup);

    /**
     *
     * @return  app 在某一topic所有 partition group的的监控消费或者生产监控 or null,sorted by partition group no;
     * null 表示当前 该partition group没有监控数据,一般是新建的生产或者消费关系,没有开始生产或者消费
     * 与findMonitorOnPartitionGroups 不同; 包含出队和积压监控信息汇总信息,for consumer or producer
     *
     **/
    List findMonitorOnPartitionGroupsForTopicApp(Subscribe subscribe);

    /**
     *
     * @param partitionGroup target partitionGroup
     * @return  app 在某一topic指定partition group的全部partition监控消费或者生产监控 or null,sorted by partition;
     * null 表示当前 该partition没有监控数据,一般是新建的生产或者消费关系,没有开始生产或者消费;for consumer or producer
     * consider active partition
     **/
    List findMonitorOnPartitionGroupDetailForTopicApp(Subscribe subscribe, int partitionGroup);

    /**
     * @return  每个partition group的的监控消费或者生产监控 or null,sorted by partition
     * null 表示当前 该partition没有监控数据,一般是新建的生产或者消费关系,没有开始生产或者消费
     *  仅是topic 的出入队监控,only for partition group 与app 无关
     *
     **/
    @Deprecated
    List findMonitorOnPartitionGroups(Subscribe subscribe);


    /**
     * @return  获取topic, app 在某台broker 上的连接数,包括生产和消费连接数
     *
     **/
    List findConnectionOnBroker(Subscribe subscribe);

    /**
     * 查找Broker元数据
     * @param broker
     * @param topicFullName
     * @param group
     * @return
     */
    BrokerMetadata findBrokerMetadata(Broker broker, String topicFullName, int group);

    /**
     * 获取
     * @param namespace
     * @param topic
     * @param groupNo
     * @return
     */
    List findPartitionGroupMetric(String namespace, String topic, Integer groupNo);

   /**
    *
    * @param ip  broker ip
    * @param port management port
    * @return archive state on the broker or null when exception
    *
    **/
   ArchiveMonitorInfo findArchiveState(String ip, int port);



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy