首页 > 解决方案 > 如何使用“Mono”处理程序确认所有成功的消息?

问题描述

我正在使用spring amqp并且我使用异步返回类型,例如Mono. 我的处理程序之一:

    @RabbitHandler
    public Mono<Response<PopularityReport>> popularityReport(PopularityReportCommand command) {
        return Mono.just(foo);
    }

当我使用这种方法时,我会收到下一个警告:

[ntContainer#0-1] .a.r.l.a.MessagingMessageListenerAdapter : Container AcknowledgeMode must be MANUAL for a Mono<?> return type; otherwise the container will ack the message immediately

我可以使用下一种方法进行手动确认。但是我有一百个处理程序,因此,这种方法看起来很不方便(我需要更改所有处理程序)。

我只想在成功执行后确认所有消息。我怎样才能在一个地方为我的所有处理程序编写一个全局策略而不更改旧代码?

标签: springrabbitmqproject-reactorspring-amqp

解决方案


您不需要手动确认此类消息;完成后框架会处理它Mono

警告只是告诉您容器未正确配置此返回类型。


推荐阅读