Как использовать другой именованный рабочий пул в той же статье? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть одна вертикаль в моем сервисе, которая принимает запросы http и использует executeBlocking для связи с MySQL db.Я использую именованный рабочий пул для взаимодействия с БД.Теперь для продвижения метрик приложения (используя библиотеку, которая блокирует) я хочу использовать другой именованный рабочий пул.Поскольку я не хочу, чтобы операции с БД прерывались метриками, я хочу иметь отдельный рабочий пул.Я мог бы использовать шину событий и использовать рабочую вертикалку для проталкивания метрик, но поскольку у этого есть накладные расходы на преобразование в JsonObject, я хочу использовать сам executeBlocking из той же вертикали.

Как уже упоминалось здесь https://groups.google.com/d/msg/vertx/eSf3AQagGGU/9m8RizIJeNQJ, рабочий пул, использованный в обоих случаях, одинаков.Таким образом, создание новой рабочей вертикали действительно поможет мне отделить потоки, используемые для работы с БД, и те, которые используются для передачи метрик.

Может ли кто-нибудь помочь мне с лучшим выбором дизайна или как я могу использовать другой рабочий пул, если я использую ту же вертикулю?

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте следующий код (написанный на Kotlin, но вы поняли идею):

val workerExecutor1 = vertx.createSharedWorkerExecutor("executor1", 4)
val workerExecutor2 = vertx.createSharedWorkerExecutor("executor2", 4)

workerExecutor1.executeBlocking(...)  // execute your db code here
workerExecutor2.executeBlocking(...)  // execute your metrics code here

Не забудьте закрыть workerExecutor, если он не нужен:

workerExecutor1.close()
...