【发布时间】:2019-01-18 16:36:45
【问题描述】:
我正在将一个使用 Spring AMQP 的项目迁移到一个使用 Spring Cloud Stream 和 RabbitMQ 的项目。
在我的旧项目中,当使用@RabbitListener 处理消息时发生一些异常时,会引发该异常。如果绑定了死信队列,仍然会抛出异常(如果有重试,只有一次,我猜是最后一次)。这对于记录目的非常有帮助。
在 Spring Cloud 中,如果你定义了属性,@StreamListener 有一个死信队列机制:
spring.cloud.stream.bindings.input1.destination=dest1
spring.cloud.stream.rabbit.bindings.input1.consumer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.input1.consumer.republishToDlq=true
但是如果你有这样的方法(只是一个例子):
@StreamListener("input1")
public void process(String message){
System.out.println("Trying...");
throw new RuntimeException();
}
日志是:
Trying...
Trying...
Trying...
(end of log, no exception thrown)
有没有办法抛出异常(仅在最后一次重试时)?
谢谢!
【问题讨论】:
标签: spring-integration spring-cloud spring-amqp spring-cloud-stream