Vertx提供了许多在轻量级环境中进行编程的选项,例如node.js。 但是,对于新用户来说,选择采用哪种方法来创建REST API几乎不会造成混淆。
在vertx中编程时可以采用不同的模型。 下面通过易于理解的图表对其进行说明。
PS – vertx编程的核心是对vertx对象的引用, 该对象可以是静态获取的,也可以是具有继承AbstractVerticle类的顶点的继承成员。 现在您知道了在哪里获取vertx对象。 让我们进一步潜水。
vertx中不同的编程模型分为以下几类,我为每个模型添加了一些有趣的名称:):-
- 面对面的方法
- 媒人方法
- 配对教练法
模型1 – FaceToFace方法 :
如图所示,在此模型中,客户端以http请求的形式发送事件,这些事件通过Router缓冲到服务器verticle。 路由器可以通过使用获得
Router.router(顶点)
现在,我们可以配置路由器以处理http请求。 小心,路由器处理程序是同步调用。 要运行阻止调用或任何异步操作,请使用executeBlocking或采用Model#2
模型2 –媒人方法 :
顾名思义,您不能直接与其他人交谈,您将不得不通过约会大赛制造商,即活动巴士。 当您在不同的计算机上运行大量微服务或要在一台计算机上模块化代码时,此模型很有用。 消息具有标头,正文,地址,并且通过调用message.reply(Object),接收方顶点可以将响应发送回发送方。
模式3:配对教练方法 :
在这里,媒人也将成为一名教练,他将帮助您如何连接其他顶点。 它通过代码生成来帮助将服务与事件总线绑定,从而使调用服务方法更加容易。
主要思想是服务名称服务(java接口)以及将作为REST API公开的相应实现服务实现 。 但是在vertx中不可能像在Spring Web或其他框架中那样直接。 为了公开Service接口,您需要创建AsyncService接口及其实现,该接口将模仿Service方法,但是签名几乎没有什么不同。
示例:在服务界面中,您可以使用以下方法:
public User getUser(final String verificationToken) {...}
在异步服务界面中,外观类似
void getUser(String verificationToken, Handler<AsyncResult<User>> resultHandler)
在这里,我们以vertx Handler的形式向该方法添加了一个额外的参数,该参数返回一个AsyncResult,从而可以进行非阻塞调用。 同样,返回类型为void。 可以使用resultHandler回调从客户端获取结果。
请在下方留下你的意见。
编码愉快!