使用kafka和spring cloud stream的新手。需要一些帮助。
设置
<小时/> 使用案例
在卡夫卡,消费者的责任是消费者的责任。所以我想,在 spring cloud stream kafka 中必须有一些我不知道的kafka消息日志控制机制。
注意1:我知道kafka日志保留时间和磁盘属性。但即使是非消费消息,kafka日志也会被删除。
注2:我已经完成了this question,但它无能为力。
答案 0 :(得分:1)
在卡夫卡,我没有这样的机制;当然不是在Spring Cloud Stream或它所基于的库中。 Kafka的客户无法访问这种低级构造。
此外,消费者抵消与主题日志完全分开;在现代经纪人中,它们存储在一个特殊主题中。
修改强>
根据以下评论,可以使用kafka-delete-records.sh
命令行工具。
请注意,这使用scala AdminClient
,默认情况下不在SCSt类路径上(自2.0起)。
但是,java AdminClient
支持类似的功能:
/**
* Delete records whose offset is smaller than the given offset of the corresponding partition.
*
* This is a convenience method for {@link #deleteRecords(Map, DeleteRecordsOptions)} with default options.
* See the overload for more details.
*
* This operation is supported by brokers with version 0.11.0.0 or higher.
*
* @param recordsToDelete The topic partitions and related offsets from which records deletion starts.
* @return The DeleteRecordsResult.
*/
public DeleteRecordsResult deleteRecords(Map<TopicPartition, RecordsToDelete> recordsToDelete) {
return deleteRecords(recordsToDelete, new DeleteRecordsOptions());
}
您可以使用启动AdminClient
AutoConfiguration
创建KafkaAdmin
。
AdminClient client = AdminClient.create(kafkaAdmin.getConfig());