apache-kafka - Kafka / RabbitMQ 中的每条消息确认
问题描述
我们有一个工作的 rabbitmq .implementation ,由于量大,我们计划切换到 kafka。
我有一个疑问。
在 rabbitMQ 中,当消费者从 Q 消费消息时,消息会进入不同的阶段,即未确认阶段。客户端/消费者需要一些时间来处理消息,处理成功后,它会向 Q 发送确认消息,并且消息会从 Q 中删除。如果不成功,在定义的时间段后,如果 Q 没有得到确认,则消息是附加在 Q 的末尾。这样我们就不会丢失任何消息。
以我对 Kafka 的了解,我知道如果例如消息 100 未成功处理,则偏移量不会增加,但如果消息 101 处理成功,则偏移量会增加。所以我丢失了消息 100。
有没有办法保证任何消息都不会丢失。
解决方案
除非到达配置之一,否则 Kafka 不会从主题中删除消息log.retention.bytes
log.retention.hours
log.retention.minutes
log.retention.ms
。因此,如果偏移量增加,您不会丢失以前的消息,您可以简单地将偏移量更改为您想要的位置。
推荐阅读
- linux - 在 docker 容器中运行和暴露 mosquitto 和 mongodb
- java - 无法使用 LocalstackTestRunner 在 Gitlab 运行器上启动 localstack
- java - 从 acr1252u 向 iOS/Android 设备发送长 NDEF 消息
- java - 尝试打印数组的所有组合,但我没有输出
- docker - 构建docker容器时如何检查空间?
- r - 仅基于斜率绘制交互图
- spring-boot - 无法创建 bean flywayInitializer - SpringBoot 2.3.0
- ios - 检测 WKWebView 中的空白页面
- reactjs - 尝试在 API 响应上设置值字符串时,useState 和 useRecoilState 返回 undefined
- layout - 当键盘出现时如何避免在 SwiftUI 中向上移动布局?