报错内容

Exception in thread "main" java.lang.IllegalStateException: Subscription to topics, partitions and pattern are mutually exclusive
	at org.apache.kafka.clients.consumer.internals.SubscriptionState.setSubscriptionType(SubscriptionState.java:111)
	at org.apache.kafka.clients.consumer.internals.SubscriptionState.assignFromUser(SubscriptionState.java:164)
	at org.apache.kafka.clients.consumer.KafkaConsumer.assign(KafkaConsumer.java:1060)
	at com.wufabao.kafka.demo.MyOffsetManager.main(MyOffsetManager.java:49)

原因

Kafka手动分区分配assign(Collection)不能和自动分区分配subscribe(Collection, ConsumerRebalanceListener)一起使用

解决方案

如果使用自动分区分配,那就不要使用手动分区分配,反之亦然,两者不可同时使用,使用一种方法,就注释掉另一种方法。
如使用手动分区分配,那么注释掉自动分区分配。

//   consumer.subscribe(Collections.singleton("tp_demo_01"));
final Set<TopicPartition> assignment1 = consumer.assignment();
for (TopicPartition partition : assignment1) {
    System.out.println(partition);
}
Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐