spring-boot - 卡夫卡的行为会是什么……?
问题描述
我被困在一个典型的用例或场景中,我不确定 Kafka 的行为会是什么。
场景:我正在使用 Spring Kafka 和 Spring Boot。在我的应用程序中,我有一个 Rest 端点,它将从主题的开头读取所有消息以检查消息的重复,然后如果不重复则写入主题。
当部署相同微服务的多个实例并且为 seekFromBegining 操作移动偏移量时,我对应用程序的行为感到困惑。
我心中的几个问题是:
do reading from beginning of a topic (with the help of seek) block the topic ?
If Yes. then how to solve this typical use case where we have to validate for the
duplication of message before writing to the topic.
使用 DB 不是解决方案,因为它会占用大量资源。并使应用程序变慢。
提前谢谢大家
解决方案
听起来您需要一个Log Compaction功能:
日志压缩确保 Kafka 将始终为单个主题分区的数据日志中的每个消息键至少保留最后一个已知值。
因此,当您指定一些 unique 时message key
,分区中不会有多个。这样一来,您根本不需要在存储之前阅读主题。
推荐阅读
- java - 在 Spring REST 中发送 jsp 响应以及状态码
- python - 在 DF 上使用 groupby 和 count 的 reset_index 后无法重命名 count 列
- java - 线程无限循环java
- vba - vba 根据相同的条件过滤多个工作表
- selenium-webdriver - 在模拟器中打开应用后出现Appium错误
- python - 如何在python中混合普通参数和切片参数
- android - 为数据绑定创建自定义绑定适配器
- c# - 连接到 MQ 时出现 2035 和 2059 错误
- kubernetes - 名称在 Kubernetes 中无法使用 docker 解析
- arrays - VBA-将值范围放入数组