Я переносу проект, использующий 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)
Есть ли способ вызвать исключение (только при последней попытке)?
Спасибо!