RED-5151: Reject redelivered messages

This commit is contained in:
deiflaender 2022-09-27 12:35:55 +02:00
parent 15409521f9
commit 98d53c4b63

View File

@ -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());