Changed retention

This commit is contained in:
2023-05-15 11:10:44 +02:00
parent cc6c2945e1
commit f94ad35bc0
9 changed files with 50 additions and 20 deletions

View File

@@ -11,7 +11,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
* @author Rafał Żukowicz
*/
@SpringBootApplication
@EnableConfigurationProperties(RetentionConfigurationProperties.class)
public class KlausApplication {
public static void main(String[] args) {

View File

@@ -1,34 +1,58 @@
package com.r11.tools.configuration;
import ch.qos.logback.core.util.FixedDelay;
import lombok.AllArgsConstructor;
import com.r11.tools.repository.MockedResponseRepository;
import com.r11.tools.repository.RequestHistoryRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.time.LocalDateTime;
@EnableScheduling
@EnableAsync
@Configuration
public class RetentionConfiguration {
@Async
@Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-message} * 60000}")
public void deleteMessage(){
System.out.println("Message deleting");
}
private final MockedResponseRepository responseRepository;
private final RequestHistoryRepository historyRepository;
private final RetentionConfigurationProperties retentionProperties;
private final Logger log = LogManager.getRootLogger();
@Async
@Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-history-record} * 60000}")
public void deleteHistoryRecord(){
System.out.println("History deleting");
}
public RetentionConfiguration(MockedResponseRepository responseRepository,
RequestHistoryRepository historyRepository,
RetentionConfigurationProperties retentionProperties){
this.historyRepository = historyRepository;
this.responseRepository = responseRepository;
this.retentionProperties = retentionProperties;
}
@Scheduled(fixedDelayString = "#{${retention.retention-cooldown} * 60000 }")
@Async
@Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-unused-message} * 60000}")
public void deleteUnusedMessages(){
System.out.println("Unused messages deleting");
public void deleteMessagesAndHistoryRecords(){
log.info("OUTDATED MESSAGES AND HISTORY RECORDS DELETED!");
responseRepository
.findAll()
.iterator()
.forEachRemaining( mockedMessage -> {
if (mockedMessage.getCreatedAt().plusMinutes(retentionProperties.getMinutesToDeleteMessage()).isBefore(LocalDateTime.now())){
responseRepository.delete(mockedMessage);
}
} );
historyRepository
.findAll()
.iterator()
.forEachRemaining(
historyRecord -> {
if (historyRecord.getDateTimeStamp().plusMinutes(retentionProperties.getMinutesToDeleteHistoryRecord()).isBefore(LocalDateTime.now())){
historyRepository.delete(historyRecord);
}
}
);
}
}

View File

@@ -21,5 +21,5 @@ public class RetentionConfigurationProperties {
@Positive
private Integer minutesToDeleteHistoryRecord;
@Positive
private Integer minutesToDeleteUnusedMessage;
private Integer retentionCooldown;
}

View File

@@ -24,6 +24,7 @@ import java.util.*;
@RestController
@RequestMapping(path = "/api/mock")
@AllArgsConstructor
@CrossOrigin(origins = "*")
public class MockController {
private final KlausService klausService;
private final Logger log = LogManager.getRootLogger();

View File

@@ -7,6 +7,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
* @author Rafał Żukowicz
*/
@ControllerAdvice
@CrossOrigin(origins = "*")
public class MvcExceptionHandler {
/**

View File

@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping(path = "/api/event")
@AllArgsConstructor
@CrossOrigin(origins = "*")
public class RequestHistoryController {
private final RequestHistoryService service;
private final RequestHistoryMapper mapper;

View File

@@ -12,6 +12,7 @@ import org.mapstruct.*;
public interface MockedMessageMapper {
@Mapping( target = "compositePrimaryKey", expression = "java(mockedMessageDto.getClientUUID() + \"_\"" +
" + mockedMessageDto.getMockedResponseId())")
@Mapping( target = "createdAt" , expression = "java(java.time.LocalDateTime.now())")
MockedMessage mockedMessageDtoToMockedMessage(MockedMessageDto mockedMessageDto);
MockedMessageDto mockedMessageToMockedMessageDto(MockedMessage mockedMessage);
}

View File

@@ -2,6 +2,7 @@ package com.r11.tools.model;
import com.r11.tools.model.constraints.HttpCode;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.UUID;
import javax.validation.constraints.Positive;
@@ -34,6 +35,7 @@ public class MockedMessage implements Serializable {
private Map<String, String> httpHeaders;
@HttpCode
private Integer httpStatus;
private LocalDateTime createdAt;
}

View File

@@ -11,6 +11,6 @@ spring.redis.host=redis
spring.redis.port=6379
#retention
retention.minutes-to-delete-message=1
retention.minutes-to-delete-history-record=2
retention.minutes-to-delete-unused-message=3
retention.minutes-to-delete-message=120
retention.minutes-to-delete-history-record=1440
retention.retention-cooldown=1440