diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessageReceiver.java new file mode 100644 index 00000000..581ebdb2 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessageReceiver.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.redaction.v1.server.queue; + +import static com.iqser.red.service.redaction.v1.server.queue.MessagingConfiguration.REDACTION_QUEUE; + +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; + +import com.fasterxml.jackson.core.JsonProcessingException; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequiredArgsConstructor +public class MessageReceiver { + + private final RedactionMessageReceiver redactionMessageReceiver; + + @RabbitHandler + @RabbitListener(queues = REDACTION_QUEUE) + public void receiveAnalyzeRequest(String in) throws JsonProcessingException { + redactionMessageReceiver.receiveAnalyzeRequest(in, false); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessagingConfiguration.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessagingConfiguration.java index 6a5e25c5..c92ebfeb 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessagingConfiguration.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/MessagingConfiguration.java @@ -1,8 +1,10 @@ package com.iqser.red.service.redaction.v1.server.queue; import lombok.RequiredArgsConstructor; + import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.QueueBuilder; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -10,11 +12,24 @@ import org.springframework.context.annotation.Configuration; @RequiredArgsConstructor public class MessagingConfiguration { - public static final String REDACTION_QUEUE = "redactionQueue"; - public static final String REDACTION_DQL = "redactionDQL"; + public static final String REDACTION_PRIORITY_QUEUE = "redactionPriorityQueue"; + + @Bean + @ConditionalOnProperty(prefix = "redaction-service", name = "priorityMode", havingValue = "false") + public MessageReceiver messageReceiver(RedactionMessageReceiver redactionMessageReceiver){ + return new MessageReceiver(redactionMessageReceiver); + } + + + @Bean + @ConditionalOnProperty(prefix = "redaction-service", name = "priorityMode", havingValue = "true") + public PriorityMessageReceiver priorityMessageReceiver(RedactionMessageReceiver redactionMessageReceiver){ + return new PriorityMessageReceiver(redactionMessageReceiver); + } + @Bean public Queue redactionQueue() { @@ -27,9 +42,21 @@ public class MessagingConfiguration { } + @Bean + public Queue redactionPriorityQueue() { + + return QueueBuilder.durable(REDACTION_PRIORITY_QUEUE) + .withArgument("x-dead-letter-exchange", "") + .withArgument("x-dead-letter-routing-key", REDACTION_DQL) + .maxPriority(2) + .build(); + } + + @Bean public Queue redactionDeadLetterQueue() { return QueueBuilder.durable(REDACTION_DQL).build(); } + } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/PriorityMessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/PriorityMessageReceiver.java new file mode 100644 index 00000000..50340c69 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/PriorityMessageReceiver.java @@ -0,0 +1,27 @@ +package com.iqser.red.service.redaction.v1.server.queue; + +import static com.iqser.red.service.redaction.v1.server.queue.MessagingConfiguration.REDACTION_PRIORITY_QUEUE; + +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; + +import com.fasterxml.jackson.core.JsonProcessingException; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequiredArgsConstructor +public class PriorityMessageReceiver { + + private final RedactionMessageReceiver redactionMessageReceiver; + + + @RabbitHandler + @RabbitListener(queues = REDACTION_PRIORITY_QUEUE) + public void receiveAnalyzeRequest(String in) throws JsonProcessingException { + + redactionMessageReceiver.receiveAnalyzeRequest(in, true); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java index d57a4e20..bfac15e8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java @@ -30,12 +30,10 @@ public class RedactionMessageReceiver { private final ManualRedactionSurroundingTextService manualRedactionSurroundingTextService; - @RabbitHandler - @RabbitListener(queues = REDACTION_QUEUE) - public void receiveAnalyzeRequest(String in) throws JsonProcessingException { + public void receiveAnalyzeRequest(String in, boolean priority) throws JsonProcessingException { var analyzeRequest = objectMapper.readValue(in, AnalyzeRequest.class); - log.info("Processing analyze request for file: {}", analyzeRequest.getFileId()); + log.info("Processing priority: {} analyze request for file: {}", priority, analyzeRequest.getFileId()); AnalyzeResult result = null; switch (analyzeRequest.getMessageType()) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java index fd37e29c..07e59d54 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/settings/RedactionServiceSettings.java @@ -20,4 +20,6 @@ public class RedactionServiceSettings { private boolean nerServiceEnabled = true; + private boolean priorityMode; + }