Kafka-streams 损坏消息处理语义
Kafka-streams corrupt message-handling semantics
我注意到 Kafka 记录有一个 CRC 字段。如果日志文件中的记录损坏(例如,消息中间的一位被翻转),在以下情况下,我希望在流应用程序中看到什么:
- 题目重复
- 题目没有重复
由于我们使用的是 Avro,我可以想象会发生以下情况之一:
- 底层基础设施检测到 CRC 错误并将其从另一个代理处获取
- DeserializationExceptionHandler 启动
- 根据策略出现其他错误,拓扑崩溃或消息被跳过
对于 CRC 错误,当您的 Streams 应用程序尝试反序列化记录时,应该在您的 Streams 应用程序中抛出异常。因此,DeserializationExceptionHandler
开始了。
在 Kafka 中,所有 read/writes 都由 partition leader 处理,follower broker 仅在后台被动复制数据,不服务任何来自客户端的 read/write。
我注意到 Kafka 记录有一个 CRC 字段。如果日志文件中的记录损坏(例如,消息中间的一位被翻转),在以下情况下,我希望在流应用程序中看到什么:
- 题目重复
- 题目没有重复
由于我们使用的是 Avro,我可以想象会发生以下情况之一:
- 底层基础设施检测到 CRC 错误并将其从另一个代理处获取
- DeserializationExceptionHandler 启动
- 根据策略出现其他错误,拓扑崩溃或消息被跳过
对于 CRC 错误,当您的 Streams 应用程序尝试反序列化记录时,应该在您的 Streams 应用程序中抛出异常。因此,DeserializationExceptionHandler
开始了。
在 Kafka 中,所有 read/writes 都由 partition leader 处理,follower broker 仅在后台被动复制数据,不服务任何来自客户端的 read/write。