不要在Spring Cloud Stream的反应式功能中将消息标记为已确认

问题描述 投票:0回答:1

我正在使用Java 13的Horsham SR1版本中使用spring-cloud-stream,我正在使用Google Pub / Sub作为基础消息系统。

我有一个反应式Function,看起来像这样:

@Bean
public Function<Flux<Message>, Mono<Void>> messageConsumer() {
    return messageFlux ->
            messageFlux
                    .flatMap(message -> {
                        // do something
                        return something;
                    })
                    .doOnError(throwable -> log.error("could not process  message", throwable))
                    .then();
}

我如何让Spring来not确认一条错误消息?在flatMap方法内引发异常是否足够?

java spring spring-cloud spring-cloud-stream google-cloud-pubsub
1个回答
1
投票

[您必须了解,每种方法都有优点和缺点,而对于被动方法,我们无视此流。它完全在您的控制之下。实际上,主要区别之一是上述函数仅被调用一次,如果它是命令性函数,则它将在每条消息上被调用。

基本上对于反应式用户而言,有效地将操作单位声明为整个流(无论在您的应用程序上下文中可能意味着什么)。势在必行,操作单元是一条消息,因此我们可以执行按消息发送的小礼物,小礼物等。

© www.soinside.com 2019 - 2024. All rights reserved.