From a8dd8d78ef853994c97d76bc7c17578b0c41007d Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 7 Jun 2023 18:46:58 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-301 --- .../gatewayapi/config/BeanConfiguration.java | 7 +++ .../controller/GatewayController.java | 43 ++++++++++++------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java index 9ae3cfac6..de1aebb14 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java @@ -11,6 +11,9 @@ import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + @Configuration public class BeanConfiguration { @Bean @@ -25,4 +28,8 @@ public class BeanConfiguration { return new UserRoleVerification(imdgProvider, messageResolver, UserRole.Admin, GatewayError.UserVerifyDenial); } + @Bean("gatewayExecutor") + public ExecutorService executor() { + return Executors.newFixedThreadPool(10); + } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index ad37874bf..092a2476b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -21,13 +21,12 @@ import ru.spcex.clearing.gatewayapi.request.CompaniesRequest; import ru.spcex.clearing.gatewayapi.request.FondListingsRequest; import ru.spcex.clearing.gatewayapi.request.MMListingsRequest; import ru.spcex.clearing.gatewayapi.response.CommonResponse; -import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import java.util.Arrays; -import java.util.Collections; import java.util.List; +import java.util.concurrent.ExecutorService; @Controller @RequestMapping("/") @@ -38,22 +37,21 @@ public class GatewayController { private final Processor fondListingsRequestProcessor; private final Processor mmListingsRequestProcessor; private final Processor companiesRequestProcessor; + private final ExecutorService executor; private List validTypes = Arrays.asList("DAY_START", "ON_DEMAND"); public GatewayController( IMessageResolver messageResolver, - @Qualifier("fondListingsRequestProcessor") - Processor fondListingsRequestProcessor, - @Qualifier("mmListingsRequestProcessor") - Processor mmListingsRequestProcessor, - @Qualifier("companiesRequestProcessor") - Processor companiesRequestProcessor - ) { + @Qualifier("fondListingsRequestProcessor") Processor fondListingsRequestProcessor, + @Qualifier("mmListingsRequestProcessor") Processor mmListingsRequestProcessor, + @Qualifier("companiesRequestProcessor") Processor companiesRequestProcessor, + @Qualifier("gatewayExecutor") ExecutorService executor) { this.messageResolver = messageResolver; this.fondListingsRequestProcessor = fondListingsRequestProcessor; this.mmListingsRequestProcessor = mmListingsRequestProcessor; this.companiesRequestProcessor = companiesRequestProcessor; + this.executor = executor; } @@ -72,8 +70,13 @@ public class GatewayController { public CommonResponse listingsFond(@RequestBody FondListingsRequest request) { // request.validate(validTypes, List.of(Section.FOND)); FondListingsRequestParam requestParam = new FondListingsRequestParam(request); - ProcessResult processResult = fondListingsRequestProcessor.process(requestParam); - if (processResult.getError() != null) throw new GatewayException(request, processResult.getError()); + executor.submit(() -> { + ProcessResult processResult = fondListingsRequestProcessor.process(requestParam); + if (processResult.getError() != null) { + log.warn("Exception while process listingFind: {}", processResult.getError()); + } + }); + return createResponse(request, true); } @@ -93,8 +96,14 @@ public class GatewayController { public CommonResponse listingsMM(@RequestBody MMListingsRequest request) { // request.validate(validTypes, List.of(Section.MKR)); MMListingsRequestParam requestParam = new MMListingsRequestParam(request); - ProcessResult processResult = mmListingsRequestProcessor.process(requestParam); - if (processResult.getError() != null) throw new GatewayException(request, processResult.getError()); + executor.submit(() -> { + ProcessResult processResult = mmListingsRequestProcessor.process(requestParam); + if (processResult.getError() != null) { + log.warn("Exception while process listing_mm: {}", processResult.getError()); + } + }); + + return createResponse(request, true); } @@ -114,8 +123,12 @@ public class GatewayController { public CommonResponse companies(@RequestBody CompaniesRequest request) { // request.validate(validTypes, Collections.emptyList()); CompaniesRequestParam requestParam = new CompaniesRequestParam(request); - ProcessResult processResult = companiesRequestProcessor.process(requestParam); - if (processResult.getError() != null) throw new GatewayException(request, processResult.getError()); + executor.submit(() -> { + ProcessResult processResult = companiesRequestProcessor.process(requestParam); + if (processResult.getError() != null) { + log.warn("Exception while process listing_mm: {}", processResult.getError()); + } + }); return createResponse(request, true); }