From 45d958e9233813b66b2dfe4aab269c956338f1ff Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Thu, 11 Jun 2026 17:44:03 +0700 Subject: [PATCH] add work monitoring scheme --- .../monitoring/service/MonitoringService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/no_copy/monitoring/service/MonitoringService.java b/src/main/java/ru/no_copy/monitoring/service/MonitoringService.java index 0f6ee0e..f9aa8fc 100644 --- a/src/main/java/ru/no_copy/monitoring/service/MonitoringService.java +++ b/src/main/java/ru/no_copy/monitoring/service/MonitoringService.java @@ -11,7 +11,10 @@ import ru.no_copy.monitoring.searcher.SearchImageService; import java.io.IOException; import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeoutException; +import java.util.function.Function; @Service @RequiredArgsConstructor @@ -42,10 +45,22 @@ public class MonitoringService { imageService.getAllImagesWithoutPagination(searchResponse, monitoring.getSearchType(), monitoring.getFileId()); - log.info("Images count: {}", images.size()); + + log.info("Images count before filter: {}", images.size()); + + images = images.stream() + .filter(distinctByKey(SearchResponse.ImageResult::getUrl)) + .toList(); + + log.info("Images count after filter: {}", images.size()); for (SearchResponse.ImageResult imageResult: images) { kafkaTemplate.send("monitoring-results", imageResult); } } + + private static java.util.function.Predicate distinctByKey(Function keyExtractor) { + Set seen = ConcurrentHashMap.newKeySet(); + return t -> seen.add(keyExtractor.apply(t)); + } }