Могу ли я использовать вызов блокировки JDBC в рабочей версии Vert.x?

Я нашел следующее предложение в руководстве Vert.x.

Рабочим статьям также не разрешается использовать клиентов или серверы TCP или HTTP.

JDBC также является TCP-клиентом, верно?

Тогда я не могу использовать блокирующий вызов JDBC в рабочей области?

Ссылка: http://vertx.io/manual.html#worker-verticles.


person Johnny Lim    schedule 13.02.2013    source источник


Ответы (3)


Нет, вы не можете использовать блокировку вызовов JDBC в статьях. Существует Модуль JDBC persistor, который использует мод рабочей очереди для распределения нагрузки между несколькими процессорами.

Vert.x 2.0 позволит распределять потоки в модулях, поэтому это должно стать менее проблематичным.

person tim_yates    schedule 13.02.2013

В настоящее время (Vert.x 3.x) вы можете развернуть вертикаль как рабочую или использовать

vertx.executeBlocking(...)

в обоих случаях ваш код будет выполняться с использованием потока из рабочего пула, а не в потоке цикла событий, что позволяет вам вызывать код блокировки.

https://vertx.io/docs/vertx-core/java/#blocking_code < / а>

person Kamil    schedule 06.02.2019

Вы можете использовать вызовы HTTP или TCP в рабочей области, но эти вызовы должны быть «асинхронными». Вы не должны блокировать поток. Как сказал Камил (вверху), вы должны развернуть вертикаль как рабочий, и если у вас есть вызов синхронизации, вы должны использовать vertx.executeBlocking (...). Здесь у вас есть информация: https://developer.mastercard.com/blog/the-vertx-worker-model

person Lucas Milotich    schedule 14.02.2019