此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.0! |
异步@KafkaListener
返回类型
从版本 3.2 开始,@KafkaListener
(以及@KafkaHandler
) 方法,允许异步发送回复。
返回类型包括CompletableFuture<?>
,Mono<?>
和 Kotlinsuspend
功能。
@KafkaListener(id = "myListener", topics = "myTopic")
public CompletableFuture<String> listen(String data) {
...
CompletableFuture<String> future = new CompletableFuture<>();
future.complete("done");
return future;
}
@KafkaListener(id = "myListener", topics = "myTopic")
public Mono<Void> listen(String data) {
...
return Mono.empty();
}
这AckMode 将自动设置MANUAL 并在检测到异步返回类型时启用无序提交;相反,异步完成将在异步作完成时确认。
当异步结果完成但出现错误时,消息是否恢复取决于容器错误处理程序。
如果侦听器方法中发生某些异常,阻止了异步结果对象的创建,则必须捕获该异常并返回适当的返回对象,该对象将导致消息确认或恢复。 |
如果KafkaListenerErrorHandler
在具有异步返回类型(包括 Kotlin 挂起函数)的侦听器上配置,则会在失败后调用错误处理程序。
有关此错误处理程序及其用途的更多信息,请参阅处理异常。