几天前我们开始使用vert.x.阅读文档(使用Eclipse Vert.x for Java开发人员进行异步编程的温和指南 - https://vertx.io/docs/guide-for-java-devs/)我理解了Verticle的概念。 我没有理解的是" service"和"服务代理":
"这是服务代理的主要目的。它允许您在事件总线上公开服务,因此,只要知道发布服务的地址,任何其他Vert.x组件都可以使用它。 使用包含异步模式后面的方法的Java接口描述服务。在引擎盖下,消息在事件总线上发送以调用服务并获得响应。但为了便于使用,它会生成一个可以直接调用的代理"
但是,如何将单个服务链接到Verticle&事件循环概念? 它是属于一个单独的独立Verticle并且它有自己独立的事件循环还是属于特定的Verticle? 我应该在何时何地注册服务?在Verticle start方法内部或仅在main方法中?
谢谢!
答案 0 :(得分:3)
粒度级别相当自由,但基本上,Verticle可以使用不同的方式(例如here's three common way)公开一个或多个服务(实现具有业务目的的单例)。
eventbus是一种允许Verticle在消息队列模型上异步通信的本机方式。
因此,Verticle可以通过监听一个或多个eventbus的通道(并在此通道上回复)来公开一个或多个服务,并且可以通过在事件总线上的其他通道上发送消息来调用其他一些Verticle公开的服务。
P.S:
1)无需使用vert.x编写main
方法(您可以使用胖罐中的io.vertx.core.Launcher
或vertx
可执行文件来运行主Verticle)。< / p>
2)您可以使用胖罐或io.vertx.core.Launcher
可执行文件中的vertx
类将所有Verticle作为单独的pid启动,或者您可以在主Verticle内启动多个Verticle,以便它们共享同一个事件默认情况下循环(但您也可以根据:https://vertx.io/docs/vertx-core/java/#worker_verticles)声明一个工作池并使用“worker verticles”。