SUPPORT-8884: add loggers

This commit is contained in:
Emir Suleimanov 2025-01-31 15:59:45 +03:00
parent 31105ecd92
commit 4138cce521
3 changed files with 31 additions and 25 deletions

View file

@ -1,10 +1,13 @@
package ru.micord.ervu.kafka.service.impl;
import java.lang.invoke.MethodHandles;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import org.springframework.kafka.requestreply.RequestReplyFuture;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
@ -13,18 +16,25 @@ import ru.micord.ervu.kafka.service.ReplyingKafkaService;
* @author gulnaz
*/
public abstract class BaseReplyingKafkaService<T, V> implements ReplyingKafkaService<T, V> {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@Override
public V sendMessageAndGetReply(String requestTopic, String replyTopic, T requestMessage) {
long startTime = System.currentTimeMillis();
RequestReplyFuture<String, T, V> replyFuture = getTemplate().sendAndReceive(
getProducerRecord(requestTopic, replyTopic, requestMessage));
try {
return Optional.ofNullable(replyFuture.get())
V result = Optional.ofNullable(replyFuture.get())
.map(ConsumerRecord::value)
.orElseThrow(() -> new RuntimeException("Kafka return result is null"));
LOGGER.info("Thread {} - KafkaSendMessageAndGetReply: {} ms",
Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
return result;
}
catch (InterruptedException | ExecutionException e) {
LOGGER.error("Thread {} - KafkaSendMessageAndGetReply: {} ms",
Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
throw new RuntimeException("Failed to get kafka response", e);
}
}

View file

@ -18,6 +18,7 @@ import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -234,11 +235,13 @@ public class EsiaAuthService {
throw new EsiaException(e);
}
finally {
LOGGER.info("Thread {}: SignSecret: {}ms RequestAccessToken: {}ms VerifySecret: {}ms",
LOGGER.info("Thread {} - SignSecret: {} ms RequestAccessToken: {} ms VerifySecret: {} ms",
Thread.currentThread().getId(), signSecret, requestAccessToken, verifySecret);
}
PersonModel personModel = null;
try {
Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr);
personModel = personalDataService.getPersonModel(esiaAccessTokenStr);
Response ervuIdResponse = getErvuIdResponse(personModel);
createTokenAndAddCookie(response, prnOid, ervuIdResponse.getErvuId(), expiresIn);
return ResponseEntity.ok("Authentication successful");
}
@ -313,7 +316,8 @@ public class EsiaAuthService {
Long expiresIn = tokenResponse.getExpires_in();
EsiaTokensStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
EsiaTokensStore.addRefreshToken(prnOid, esiaNewRefreshTokenStr, expiresIn);
Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr);
PersonModel personModel = personalDataService.getPersonModel(esiaAccessTokenStr);
Response ervuIdResponse = getErvuIdResponse(personModel);
createTokenAndAddCookie(response, esiaAccessToken.getSbj_id(), ervuIdResponse.getErvuId(), expiresIn);
}
catch (Exception e) {
@ -372,27 +376,12 @@ public class EsiaAuthService {
}
}
public Response getErvuIdResponse(String accessToken) {
long requestPersonData = 0, requestIdERVU = 0;
try {
long startTime = System.currentTimeMillis();
PersonModel personModel = personalDataService.getPersonModel(accessToken);
requestPersonData = System.currentTimeMillis() - startTime;
Person person = copyToPerson(personModel);
startTime = System.currentTimeMillis();
String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic,
requestReplyTopic, objectMapper.writeValueAsString(person)
);
requestIdERVU = System.currentTimeMillis() - startTime;
return objectMapper.readValue(kafkaResponse, Response.class);
}
catch (Exception e) {
throw new EsiaException(e);
}
finally {
LOGGER.info("Thread {}: RequestPersonData: {}ms RequestIdERVU: {}ms",
Thread.currentThread().getId(), requestPersonData, requestIdERVU);
}
public Response getErvuIdResponse(PersonModel personModel) throws JsonProcessingException {
Person person = copyToPerson(personModel);
String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic,
requestReplyTopic, objectMapper.writeValueAsString(person)
);
return objectMapper.readValue(kafkaResponse, Response.class);
}
private Person copyToPerson(PersonModel personModel) {

View file

@ -1,5 +1,6 @@
package ru.micord.ervu.security.esia.service;
import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
@ -8,6 +9,8 @@ import java.time.Duration;
import java.util.Base64;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.micord.ervu.security.esia.exception.EsiaException;
import ru.micord.ervu.security.esia.config.EsiaConfig;
import ru.micord.ervu.security.esia.model.EsiaAccessToken;
@ -23,6 +26,7 @@ import org.springframework.stereotype.Service;
*/
@Service
public class EsiaPersonalDataService implements PersonalDataService {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@Autowired
private EsiaConfig esiaConfig;
@ -32,6 +36,7 @@ public class EsiaPersonalDataService implements PersonalDataService {
@Override
public PersonModel getPersonModel(String accessToken) {
long startTime = System.currentTimeMillis();
try {
EsiaAccessToken esiaAccessToken = readToken(accessToken);
String prnsId = esiaAccessToken.getSbj_id();
@ -39,9 +44,11 @@ public class EsiaPersonalDataService implements PersonalDataService {
personModel.setPassportModel(
getPassportModel(prnsId, accessToken, personModel.getrIdDoc()));
personModel.setPrnsId(prnsId);
LOGGER.info("Thread {} - RequestPersonData: {} ms", Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
return personModel;
}
catch (Exception e) {
LOGGER.error("Thread {} - RequestPersonData: {} ms", Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
throw new RuntimeException(e);
}
}