apache-kafka - 代理日志中有关混合偏移提交类型的警告
问题描述
我们有处理器通过生产者提交补偿以实现一次性交付。
最近我注意到所有偏移量都是偶数(0,2,4,6,8),并且我们在代理日志中有以下警告。
[2019-01-24 03:06:24,473] WARN [GroupMetadataManager brokerId=0] group: xxxx-group with leader: 1e9856a9-bce1-4a28-9774-0117382a9751-4d9411d1-36fb-4332-af9b-beb65aedfed1 has received offset commits from consumers as well as transactional producers. Mixing both types of offset commits will generally result in surprises and should be avoided. (kafka.coordinator.group.GroupMetadataManager)
我们如何执行一次精确的操作有什么问题吗?这真的会带来惊喜吗?
解决方案
我猜你正在为每条记录提交一个事务。
提交(或中止)时,控制批次被写入分区并采用偏移量。该控制记录对客户是不可见的,但经纪人使用它来划定交易并找到它们的最终状态。
基本上,您的记录采用偶数偏移量,并且对于每个记录,都有一个提交控制批次采用下一个偏移量。
现在关于日志中的警告:
如果有一个事务性生产者和一个消费者都为同一个组提交偏移量,你就会得到这个。您应该确保只有事务生产者提交偏移量,以便它们成为您的事务的一部分,并且记录被处理一次。
推荐阅读
- javascript - 我如何在旧的 react render() 函数中使用上下文?
- java - 从 jar 读取图像的问题
- c# - 如何使用 EF Core 恢复迁移历史记录
- python - APScheduler 从系统睡眠唤醒后不会触发作业
- python - 将十进制数从 str 转换为 float
- javascript - Javascript:条件变量声明有更好的简写吗?
- mongodb - 如何更新 Json 代码,而不是工作代码
- python - 电报机器人(pyTelegramBotAPI)不处理新用户加入组
- ruby-on-rails - Dockerized Rails/Postgres 应用程序中的数据库身份验证失败
- r - 使用 pROC 从现有数据制作 ROC 曲线