gpt4 book ai didi

java - Vert.x - Verticles 和服务之间的区别

转载 作者:行者123 更新时间:2023-11-30 07:47:34 26 4
gpt4 key购买 nike

我们几天前开始使用 vert.x。阅读文档(面向 Java 开发人员的使用 Eclipse Vert.x 进行异步编程的温和指南 - https://vertx.io/docs/guide-for-java-devs/)我理解了 Verticle 的概念。我不明白的是“服务”和“服务代理”的概念:

“这是服务代理的主要目的。它让您在事件总线上公开服务,因此,任何其他 Vert.x 组件都可以使用它,只要他们知道服务所在的地址出版。服务使用包含遵循异步模式的方法的 Java 接口(interface)来描述。在幕后,消息在事件总线上发送以调用服务并获取响应。但为了便于使用,它会生成一个代理,您可以直接调用它”

但是,单个服务如何与 Verticle 和事件循环概念相关联?它属于一个单独的独立 Verticle 并且它有他单独的事件循环还是属于一个特定的 Verticle?我应该何时何地注册服务?在 Verticle 启动方法中还是在 main 方法中?

谢谢!

最佳答案

粒度级别相当自由,但基本上,一个 Verticle 可以通过不同的方式(例如 here's three common way)公开一个或多个服务(单例实现具有业务目的的接口(interface))。

事件总线是一种允许 Verticle 在消息队列模型上异步通信的原生方式。

因此,一个 Verticle 可以通过监听一个或多个事件总线的 channel (并在该 channel 上回复)来公开一个或多个服务,并且可以通过在事件总线上的其他 channel 上发送消息来调用其他一些 Verticle 公开的其他服务。

附言:

1) 无需使用 vert.x 编写 main 方法(您可以使用 fat jar 中的 io.vertx.core.Launchervertx 可执行文件来运行你的主 Verticle)。

2) 您可以使用 fat jar 或 vertx 可执行文件中的 io.vertx.core.Launcher 类将所有 Verticle 作为单独的 pid 启动,或者您可以启动一个主 Verticle 中的多个 Verticle,因此它们默认共享相同的事件循环(但您也可以声明一个工作池并根据:https://vertx.io/docs/vertx-core/java/#worker_verticles 使用“worker Verticles”)。

关于java - Vert.x - Verticles 和服务之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com