簡體   English   中英

如何在Java中獲取Kafka主題延遲

[英]How to get a Kafka Topic Lag in Java

我想在Java中查看kafka主題的滯后位置。 這里有人說下面的代碼可以工作。

AdminClient client = AdminClient.createSimplePlaintext("localhost:9092");
Map<TopicPartition, Object> offsets = JavaConversions.asJavaMap(
client.listGroupOffsets("groupID"));
Long offset = (Long) offsets.get(new TopicPartition("topic", 0));

但是當我嘗試導入kafka.admin.AdminClient時listGroupOffsets方法不存在。 請幫我解決一下這個。

從0.10.2開始,方法listGroupOffsets已引入AdminClient.scala 有關詳細信息,請參見KAFKA-3853 因此,您應該使用Kafka 0.10.2.0或更高版本。

您可以使用https://github.com/yahoo/kafka-manager並可以使用其http Rest API獲取消費者組延遲和其他詳細信息。

我正在使用Spring框架。 使用下面的代碼,您可以通過java獲取指標。

@Component
public class Receiver {

private static final Logger LOGGER =
  LoggerFactory.getLogger(Receiver.class);


@Autowired
private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

  public void testlag() {
  for (MessageListenerContainer messageListenerContainer : kafkaListenerEndpointRegistry
            .getListenerContainers()) {
      Map<String, Map<MetricName, ? extends Metric>> metrics = messageListenerContainer.metrics();
      metrics.forEach( (clientid, metricMap) ->{
          System.out.println("------------------------For client id : "+clientid);
          metricMap.forEach((metricName,metricValue)->{
              //if(metricName.name().contains("lag"))
              System.out.println("------------Metric name: "+metricName.name()+"-----------Metric value: "+metricValue.metricValue());
          });
      });
        }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM