该版本仍在开发中,尚未被视为稳定。请使用最新的稳定版本,使用 Spring AMQP 4.0.0!spring-doc.cadn.net.cn

异步@RabbitListener返回类型

@RabbitListener(和@RabbitHandler)方法可以通过异步返回类型来指定CompletableFuture<?>单核细胞增多症<?>,允许异步发送回复。ListenableFuture<?>已不再支持;它已被 Spring Framework 弃用。spring-doc.cadn.net.cn

监听器容器工厂必须配置为确认模式。手册这样消费者线程就不会 ack 该消息;相反,异步完成会在异步作完成时 ack 或 nack 消息。当异步结果完成时出现错误,消息是否重新排队取决于抛出的异常类型、容器配置和容器错误处理程序。默认情况下,消息会被重新排队,除非容器的defaultRequeueRejected属性设置为false(确实如此true默认情况下)。如果异步结果被满足于AmqpRejectAndDontRequeueException,消息不会被重新排队。如果容器defaultRequeueRejected财产是false你可以通过将未来的例外设置为 来覆盖它ImmediateRequeueException消息将被重新排队。如果监听器方法中出现异常导致异步结果对象的创建,你必须捕获该异常并返回相应的返回对象,使消息被确认或重新排队。

从版本 2.2.21、2.3.13、2.4.1 开始,确认模式将自动设置手动当检测到异步返回类型时。此外,带有致命异常的进件消息会被单独负向确认,之前任何未确认的消息也会被负向确认。spring-doc.cadn.net.cn

从3.0.5版本开始,@RabbitListener(和@RabbitHandler)方法可以用 Kotlin 标记暂停整个处理过程和回复生成(可选)均在相应的Kotlin协程上完成。上述所有规则确认模式。手册我们仍然在申请。 这org.jetbrains.kotlinx:kotlinx-coroutines-reactor类路径中必须存在依赖,才能允许暂停功能调用。spring-doc.cadn.net.cn

从3.0.5版本开始,如果兔子听众错误处理者在带有异步返回类型(包括Kotlin挂起函数)的监听器上配置,错误处理程序在失败后被调用。有关该错误处理程序及其用途的更多信息,请参见处理异常spring-doc.cadn.net.cn