【发布时间】:2021-08-26 05:06:08
【问题描述】:
我注意到 spring kafka 中即将推出的功能:https://docs.spring.io/spring-kafka/docs/2.8.0-M2/api/org/springframework/kafka/listener/ContainerProperties.html#setAsyncAcks(boolean)
我的问题是,如果我的提交模式是 MANUAL(而不是 MANUAL_IMMEDIATE),那并不总是意味着 ack 是异步处理的(不是立即)吗?
手动状态的当前文档
MANUAL:消息侦听器负责确认()确认。之后,应用与 BATCH 相同的语义。
在我看来,在确认 BATCH 中的所有记录之前,提交永远不会发生。当前行为是什么(或者如果 asyncAcks 设置为 false 会是什么行为)?
问题 2:假设我被困在 spring kafka 2.7 领域:我有一个侦听器,它为另一个主题生成消息。在侦听器成功生成消息之前,我不希望提交偏移量。确保这一点的自然方法是在 kafkaTemplate.send 调用返回的 ListenableFuture 中的 onSuccess 方法中发送 ack。
但是看到 2.7 似乎不支持乱序确认,我想知道这是否真的是一种安全的方法。
【问题讨论】:
标签: spring-kafka