【问题标题】:How to use a different named worker pool in same verticle?如何在同一个verticle中使用不同的命名工作池?
【发布时间】:2018-11-28 06:43:29
【问题描述】:

我的服务中有一个 Verticle,它接收 http 请求并使用 executeBlocking 与 MySQL db 对话。我正在使用命名工作池与数据库交互。现在,为了推送应用程序指标(使用阻塞的库),我想使用不同的命名工作池。因为我不希望数据库操作被指标中断,所以我想要一个单独的工作池。 我可以使用事件总线并使用工作节点来推送指标,但由于这会产生转换到 JsonObject 的开销,因此我想从同一个节点使用 executeBlocking 本身。

这里提到https://groups.google.com/d/msg/vertx/eSf3AQagGGU/9m8RizIJeNQJ ,两种情况下使用的工作池是相同的。所以,制作一个新的工人 Verticle 真的会帮助我解耦用于数据库操作的线程和用于推送指标的线程吗?

谁能帮助我做出更好的设计选择,或者如果我使用相同的 Verticle,我该如何使用不同的工作池?

【问题讨论】:

  • 我的解决方案有帮助吗?

标签: blocking vert.x worker-pool


【解决方案1】:

尝试以下代码(用 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()

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2011-06-07
    • 2012-06-20
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多