Kafka Consumer Acknowledge 基于条件的消息

Kafka Consumer Acknowledge message based on condition

我希望 if 控件进入 if 块时,消息应该被确认并且 if 之外的语句不应该被读取。 我知道我可以放置一个 else 块,只是想了解消息是否已被确认并且它将在 if 块中提交,但为什么在执行 if 块时在外部处理消息。

@Value(${environment.env})
private String env;
@kafkaListener
public void consume(@payload User user, Acknowledgment ack){
   if(!env.equals(user.getEnv()){
log.info("skip");
acknowledgement.acknowlwdge();
}
// If env same
//Do some other processing with payload
}

已将确认模式设置为Manually_Immediate 并且自动偏移为 false

这就是 Java(或与此相关的任何计算机语言)的工作原理。确认偏移量就是这样做的,它不会影响在您的侦听器中执行的代码流。

你需要一个else { ... }块。