Apache kafka 卡夫卡:删除空闲消费者组id
在某些情况下,我使用Kafka流对主题的小内存(hashmap)投影进行建模。K,V缓存确实需要一些操作,因此对于GlobalKTable来说不是一个好的例子。在这种“缓存”场景中,我希望所有同级实例都具有相同的缓存,因此我需要绕过使用者组机制 为了实现这一点,我通常只需使用随机生成的应用程序Id启动我的应用程序,因此每次重新启动时,每个应用程序都会重新加载主题。唯一需要注意的是,我最终发现一些消费者群体在kafka brokers上孤立无援,一直到offset.retention.minutes,这对于我们的运营监控工具来说并不理想。 知道如何解决这个问题吗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
- 我们是否可以将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