diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportMessageReceiver.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportMessageReceiver.java index 73e9f19..d1b7731 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportMessageReceiver.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportMessageReceiver.java @@ -3,6 +3,8 @@ package com.iqser.red.service.redaction.report.v1.server.service; import static com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration.REPORT_QUEUE; import static com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration.REPORT_RESULT_QUEUE; +import org.springframework.amqp.AmqpRejectAndDontRequeueException; +import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -14,6 +16,7 @@ import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage; import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -27,10 +30,16 @@ public class ReportMessageReceiver { private final RabbitTemplate rabbitTemplate; + @SneakyThrows @RabbitHandler - public void receive(String in) throws JsonProcessingException { + public void receive(Message message) { - ReportRequestMessage reportMessage = objectMapper.readValue(in, ReportRequestMessage.class); + ReportRequestMessage reportMessage = objectMapper.readValue(message.getBody(), ReportRequestMessage.class); + + // This prevents from endless retries oom errors. + if(message.getMessageProperties().isRedelivered()){ + throw new AmqpRejectAndDontRequeueException(String.format("Error during last processing of request with downloadId: %s, do not retry.", reportMessage.getDownloadId())); + } long start = System.currentTimeMillis(); log.info("Start generating reports for downloadId {}", reportMessage.getDownloadId());