[英]When Kafka consumer don't use subscribe method, do it check session.timeout.ms or max.pool.interval.ms?
this is consumer code with not using subscribe method.这是不使用订阅方法的消费者代码。
val consumer = KafkaConsumer<String, String>(properties)
val topics = listOf(TopicPartition("TEST", 1)
consumer.assgin(topics)
try {
do {
val records = consumer.poll(Duration.ofMillis(1000))
records.forEach {
println("result : $it")
}
} while (!records.isEmpty)
} catch (e: Exception) {
println(e.message)
} finally {
consumer.close()
}
do it check session.timeout.ms, max.pool.interval.ms or hearbeat.interval.ms?是否检查 session.timeout.ms、max.pool.interval.ms 或 heartbeat.interval.ms? i think if kafka consumer don't use subscribe method, it don't check.
我认为如果 kafka 消费者不使用订阅方法,它不会检查。
Both subscribe()
and assign()
will check for session.timeout.ms,max.pool.interval.ms and other properties that you specify during consumer creation. subscribe()
和assign()
都将检查 session.timeout.ms、max.pool.interval.ms 和您在创建消费者期间指定的其他属性。
Difference between subscribe()
and assign()
is that when using subscribe()
和assign()
的区别在于使用时
subscribe() uses
group-id
in the consumer properties and helps in dynamic partition assignment and consumer group coordinationsubscribe() 在消费者属性中使用
group-id
并有助于动态分区分配和消费者组协调
assign will manually assign a list of partitions to this consumer.
assign 将手动分配一个分区列表给这个消费者。 and this method does not use the consumer's group management functionality (where no need of
group.id
)并且此方法不使用消费者的组管理功能(不需要
group.id
)
More information here: https://stackoverflow.com/questions/53938125/kafkaconsumer-java-api-subscribe-vs-assign#:~:text=Subscribe%20makes%20use%20of%20the,to%20a%20list%20of%20topics .更多信息在这里: https://stackoverflow.com/questions/53938125/kafkaconsumer-java-api-subscribe-vs-assign#:~:text=Subscribe%20makes%20use%20of%20the,to%20a%20list%20of %20 个主题。
Thanks.谢谢。 I tested like it.
我测试喜欢它。
properties[ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG] = 10000
val consumer = KafkaConsumer<String, String>(properties)
val partitions = mutableListOf<TopicPartition>().apply {
for (i in 0 until 1) {
add(TopicPartition("TEST", i))
}
}
consumer.assgin(partitions)
Threed.sleep(20000L)
try {
do {
val records = consumer.poll(Duration.ofMillis(1000))
records.forEach {
println("result : $it")
}
} while (!records.isEmpty)
} catch (e: Exception) {
println(e.message)
}
but, it worked well.但是,它运作良好。 Did I do something wrong on the test?
我在考试中做错了吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.