Spring Cloud Stream: как переиздать в очередь недоставленных писем, а также выбросить исключение - PullRequest
0 голосов
/ 18 января 2019

Я переносу проект, использующий 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)

Есть ли способ вызвать исключение (только при последней попытке)?

Спасибо!

1 Ответ

0 голосов
/ 18 января 2019

См. Документацию о потребительских свойствах.

Установите ...consumer.max-attempts=1 для отключения повтора.

...