Jak skonfigurować automatyczny mechanizm nack w spring boot tak, aby niedostarczona wiadomość (która jest znackowana z powodu np. lecącego wyjątku) nie powodowała zablokowania pozostałych wiadomości w kolejce? na teraz wygląda to jakby problematyczna wiadomość wracała na początek kolejki, blokując kolejne wpadające na kolejkę i powodując korek. Oto moja konfiguracja:
spring:
rabbitmq:
listener:
simple:
retry:
enabled: true
initial-interval: 2000
max-attempts: 50
max-interval: 10000
multiplier: 1.5
listener:
@RabbitListener(queues = "someQueue", concurrency = "1-10")
public void SomeQueue(String message) {
log.info("Received message to queue SomeQueue");
someService.processMessage(message);
}
jeśli w someService.processMessage()
poleci wyjątek, wiadomość znowu trafi z powrotem do kolejki.
scenariusz jaki chcę ograć to np someService łączy się z różnymi usługami zewnętrznymi, w zależności od wiadomości. jeśli jedna usługa zewnętrzna zawiedzie (tymczasowy downtime) to nie chciałbym, aby pozostałe wiadomości w kolejce, które nie polegają na tej konkretnej usłudze nie mogły być obsłużone. rozdział na kolejki dedykowane pod wywoływane pod spodem usługi nie wchodzi w grę.
na teraz mam wiadomość, w której poleciał wyjątek wraca na początek i blokuje następne:
aplikacja chodzi na kilkanaście instancji spring boota.
dzięki!