关于Kafka的承认方式,我发现了以下两个文件:
参考文献1:https://docs.spring.io/spring-kafka/docs/1.0.0.m1/reference/html/_reference.html#_committing_offsets
参考文献2:https://appdoc.app/artifact/org.springframework.kafka/spring-kafka/1.0.2.release/org/springframework/kafka/listener/config/containerproperties.html
从reference1看,偏移量似乎已提交 消息处理之后,即,如果使用者端的侦听器顺利返回并且没有抛出异常。
从参考文献2来看 已提交偏移量 消息发送后 传递给侦听器,即,即使使用者端的侦听器抛出异常,偏移量也已经提交。
在本地测试之后,我觉得行为与参考1一致。
问题1-我对参考文献1的理解正确吗?
问题2-假设我的侦听器不是批处理侦听器,ackmode是批处理。下面的侦听器如何使用ack。就像Spring一样,当投票时,比如说得到10Msg,把每条消息传递给一个监听器,然后执行它们。最后,如果它们都执行时没有任何错误,spring会偏移提交,否则就不会?在上述场景中,批处理是如何工作的?
@KafkaListener(topics = "topicA", groupId = "gid")
@SendTo
public Message<Foo> listen(Bar msg)
{
//some work
}
暂无答案!
目前还没有任何答案,快来回答吧!