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)); + } }