Как получить количество запросов, ожидающих обработки при развертывании HTTP-сервера vertx в качестве рабочей версии? - PullRequest
0 голосов
/ 18 июня 2020

Есть ли другой способ получить количество запросов, ожидающих обработки рабочими потоками при развертывании HTTP-сервера в качестве рабочей версии? Мне нужна альтернатива для https://vertx.io/docs/vertx-dropwizard-metrics/java/#_pool_metrics.

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете попробовать использовать асинхронные счетчики , которые вы можете увеличивать всякий раз, когда вы отправляете событие на указанный c адрес на шине событий, а затем уменьшать его, когда вершина завершает обработку (или только что зафиксировала событие. ). Если у вас много вертикалей и вы не хотите изменять каждую из них, вы можете установить исходящий перехватчик :

vertx.eventBus().addOutboundInterceptor(deliveryContext -> {
                //you can validate if the address is what you are looking for
                if (deliveryContext.message().address().equalsIgnoreCase("http event")) {
                    //increment counter
                }
                deliveryContext.next();
            });

, если у вас много адресов для покрытия, вы всегда можете добавьте в сообщение какой-нибудь заголовок c, а затем найдите его в перехватчике, но это будет означать, что вам придется изменять каждый вызов .send () в худшем случае:

vertx.eventBus().addOutboundInterceptor(deliveryContext -> {
    //looking for specific header
    if (deliveryContext.message().headers().contains("incrementCounterHeader")) {
        //increment counter
    }
    deliveryContext.next();
});

//later in code
vertx.eventBus().send("http event", message,
        new DeliveryOptions().addHeader("incrementCounterHeader", "somevalue"));

последнее, но не менее важное если вы решите использовать счетчик asyn c, возможно, вы захотите распространять только сообщения .onComplete () или .onSuccess (), в зависимости от логики вашего бизнеса c.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...