Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡:删除空闲消费者组id_Apache Kafka_Kafka Consumer Api_Apache Kafka Streams - Fatal编程技术网

Apache kafka 卡夫卡:删除空闲消费者组id

Apache kafka 卡夫卡:删除空闲消费者组id,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,在某些情况下,我使用Kafka流对主题的小内存(hashmap)投影进行建模。K,V缓存确实需要一些操作,因此对于GlobalKTable来说不是一个好的例子。在这种“缓存”场景中,我希望所有同级实例都具有相同的缓存,因此我需要绕过使用者组机制 为了实现这一点,我通常只需使用随机生成的应用程序Id启动我的应用程序,因此每次重新启动时,每个应用程序都会重新加载主题。唯一需要注意的是,我最终发现一些消费者群体在kafka brokers上孤立无援,一直到offset.retention.minute

在某些情况下,我使用Kafka流对主题的小内存(hashmap)投影进行建模。K,V缓存确实需要一些操作,因此对于GlobalKTable来说不是一个好的例子。在这种“缓存”场景中,我希望所有同级实例都具有相同的缓存,因此我需要绕过使用者组机制

为了实现这一点,我通常只需使用随机生成的应用程序Id启动我的应用程序,因此每次重新启动时,每个应用程序都会重新加载主题。唯一需要注意的是,我最终发现一些消费者群体在kafka brokers上孤立无援,一直到offset.retention.minutes,这对于我们的运营监控工具来说并不理想。 知道如何解决这个问题吗

  • 我们是否可以将applicationId配置为短暂的,以便在应用程序死亡后让它消失
  • 或者我们可以强制消费者仅在本地管理其抵消
  • 或者,在优雅地关闭应用程序时,是否有一些java adminApi可以用来清理我的消费者组id

谢谢

AdminClient
中有一个名为
DeleteConsumerGroup
的Java API,可用于删除单个ConsumerGroup

您可以在卡夫卡2.5.0中使用它,如下所示

导入java.util.array;
导入java.util.Properties;
导入java.util.concurrent.ExecutionException;
导入org.apache.kafka.clients.admin.*;
导入org.apache.kafka.common.KafkaFuture;
公共类DeleteConsumerGroup{
公共静态void main(字符串[]args){
System.out.println(“***正在启动AdminClient以删除用户组***”);
最终属性=新属性();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,“localhost:9092”);
put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG,“1000”);
put(AdminClientConfig.DEFAULT_API_TIMEOUT_MS_CONFIG,“5000”);
AdminClient=AdminClient.create(属性);
字符串consumerGroupToBeDeleted=“console-consumer-65092”;
DeleteConsumerGroupsResult DeleteConsumerGroupsResult=adminClient.deleteConsumerGroups(Arrays.asList(consumerGroupToBeDeleted));
KafkaFuture resultFuture=deleteConsumerGroupsResult.all();
试一试{
resultFuture.get();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}
adminClient.close();
}
}
运行上述代码之前,请先列出ConsumerGroup 运行上述代码后的ConsumerGroup列表
$ kafka-consumer-groups --bootstrap-server localhost:9092 --list
console-consumer-65092
console-consumer-53268
$ kafka-consumer-groups --bootstrap-server localhost:9092 --list
console-consumer-53268