我在Apache camel中编写应用程序。我通过驼峰Kafka组件使用来自某些Kafka主题的消息,并在发生任何崩溃/重启时转储到数据库中进行恢复。下面是驼峰URI
卡夫卡:autoCommitEnable =假安培;的groupId =的R& keySerializerClass = org.apache.kafka.common.serialization.StringSerializer&安培; serializerClass = org.apache.kafka.common.serialization.StringSerializer&安培;主题=
我的用例是 - 我已经从Kafka中消耗了一些消息但是无法将其转储到数据库中以进行恢复和崩溃。现在重新启动后如何使用相同的使用者组ID获取所有丢失的消息应用程序 ? 感谢
答案 0 :(得分:0)
现在如何在重新启动应用程序后获取具有相同使用者组ID的所有丢失邮件?
实际上,kafka会为您存储使用者偏移量,如果您在应用程序中提交了偏移量。因此,当您重新启动应用程序时,它将使用存储在kafka中的最后一个偏移量的消息。
您可以设置AutocommitEnable = true OR
有一些片段代码:
if (endpoint.getConfiguration().isAutoCommitEnable() != null
&& !endpoint.getConfiguration().isAutoCommitEnable()) {
long partitionLastoffset = partitionRecords.get(partitionRecords.size() - 1).offset();
consumer.commitSync(Collections.singletonMap(
partition, new OffsetAndMetadata(partitionLastoffset + 1)));
}
即使您没有设置AutocommitEnable,Camel也会处理这个问题。