异步@KafkaListener返回类型
从3.2版本开始,@KafkaListener(和@KafkaHandler)方法可以通过异步返回类型指定,从而使回复异步发送。
返回类型包括CompletableFuture<?>,单核细胞增多症<?>以及Kotlin暂停功能。
@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将自动设置手动并在检测到异步返回类型时启用乱序提交;异步完成时,异步完成会被 ack 处理。
当异步结果以错误完成时,消息是否恢复取决于容器错误处理程序。
如果监听器方法中出现异常导致异步结果对象的创建,你必须捕获该异常并返回合适的返回对象,使消息被确认或恢复。 |
如果KafkaListenerErrorHandler在带有异步返回类型(包括Kotlin挂起函数)的监听器上配置,错误处理程序在失败后被调用。
有关该错误处理程序及其用途的更多信息,请参见处理异常。