Ошибка обработки сеанса: пул#acquire(Duration) находится в ожидании дольше настроенного времени ожидания 45000 мс.

Я использую spring-boot-starter-graphql для простого взаимодействия клиент-сервер с веб-сокетом. Ниже фрагмент кода в клиенте

                  "ws://localhost:8080" +"/graphql";
  WebSocketClient client = new ReactorNettyWebSocketClient();
  
  WebSocketGraphQlClient graphQlClient = WebSocketGraphQlClient.builder(endPoint, client).build();
    Flux<HomeLocationResponse> locationCreateResponseMono = graphQlClient.documentName("location-document") 
            .variable("msisdn", getLocationRequest.getMsisdn()) 
            .variable("transactionid", getLocationRequest.getTransactionId()) 
            .retrieveSubscription("getLocation")
            .toEntity(HomeLocationResponse.class)

Кроме того, я создал конечную точку REST, которая вызывает этот код. Это хорошо работает для первых 500 запросов после запуска этой службы, но после 500 запросов он ломается, и я вижу несколько ошибок с трассировкой стека ниже

      2022-04-26 18:39:34.868 ERROR 102456 --- [ parallel-2] o.s.g.client.WebSocketGraphQlTransport : Session handling error: Pool#acquire(Duration) has been pending for more than the configured timeout of 45000ms
2022-04-26 18:39:34.869 ERROR 102456 --- [ parallel-2] reactor.core.publisher.Operators : Operator called default onErrorDropped

reactor.netty.internal.shaded.reactor.pool.PoolAcquireTimeoutException: Pool#acquire(Duration) has been pending for more than the configured timeout of 45000ms
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.run(AbstractPool.java:415) ~[reactor-netty-core-1.0.17.jar:1.0.17]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.4.16.jar:3.4.16]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.4.16.jar:3.4.16]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

Я новичок в веб-сокете и не уверен, почему соединение с веб-сокетом не закрывается.

Мой сценарий для задействованных микросервисов приведен ниже.

1. Микросервис GraphQLClient 2. Микросервис GraphQl Server

GraphQLClient Microservice снова предоставляет конечную точку REST в качестве оболочки.

Таким образом, будет выполнен следующий поток Browser -> GraphQLClient <-> GraphQlServer

0 ответов

Другие вопросы по тегам