Building Reactive Microservicesjava
在这个章节中,咱们将会构建咱们的第一个 Vert.x 微服务,就像大多数微服务系统同样咱们使用HTTP提供微服务,但由于系统包含多个微服务之间的交互,咱们将构建另外一个微服务系统来消费上一个微服务,而后,咱们会展现为何这样的设计并无彻底实现响应式微服务。最后,咱们将实现以消息为基础的微服务,看消息机智怎么改良咱们的响应式。react
First Microservicesweb
在这里,咱们会实现相同的微服务设置两次,第一个微服务暴露一个 hello 服务,而后咱们将会调用这个服务,消费者咱们叫作 hello 消费微服务,这个小系统不只说明了服务如何送达,并且展现如何被消费。在图Figure 3-1,微服务使用 HTTP 实现,hello 消费者微服务使用 HTTP client 调用 hello微服务。在一个实现,hello 消费者微服务使用消息来和 hello 打交道,这种差别影响着系统的响应性。浏览器
在以前的章节,咱们使用了两种方式来使用 Vert.x APIs:callbacks 和 RxJava,为了说明差别和帮助您找到您的首选方法,hello 微服务使用了回调的开发模型,然而消费者使用 RxJava 实现。微信
Implementing HTTP Microservices微服务
微服务一般以HTTP的形式暴露 API,以 HTTP 请求的方式消耗,让咱们看看 Vert.x 怎么实现 HTTP 间的交互,这个章节的代码在microservices/hello-microservice-http 文件夹中。ui
Getting Started插件
建立一个 hello-microservice-http 文件夹,而后构建项目结构:设计
这个命令生成 Maven 项目结构和配置 Vert.x Maven 插件,以及增长了 vertx-web 依赖,Vert.x Web 模块提供了基本提供了全部在Vert.x上构建现代 Web 应用的东西。router
The Verticle
打开 src/main/java/io/vertx/book/http/HelloMicroser vice.java,自动生成的代码没干什么有意思的事情,仅仅只是个开始:
如今,执行下面的 Maven 命令:
你能够编辑这个 Verticle,一旦你点击了保存,那么应用将会自动编译和重启。
HTTP Microservice
是时候让你的 MyVerticle类作点事情啦,咱们先器写个 HTTP 服务,如你前面的章节同样,你仅仅用下面的代码就能够了:
点了保存后,你能够在浏览器打开 http://localhost:8080 地址,这段代码建立一个8080端口的 HTTP 服务和注册了一个 requestHandler 用来处理 HTTP 请求,就如今而言,咱们只是在 response 中写入了 hello。
Using Routes and Parameters
许多服务的响应是经过 Web URLs,所以检查路径就能够知道请求访问的是什么。然而,作路径检查请求处理程序requestHandler 实现不一样的 actions 会变得很复杂。幸运的是,Vert.x Web 提供了 Router 注册的机制,让咱们重写 start 方法,两个 routes:
咱们建立了 Router 对象,注册两个 routes,第一个处理 / 下的请求,输出 hello,第二个路径下有个参数(:name),处理的程序将传递过来的值加到欢迎的返回信息中。最后,咱们改变 HTTP server 的requestHandler 来接受 router 方法。
若是你没有中止执行 vertx:run ,你应该能够再浏览器打开下面的:
http://localhost:8080—You should see hello
http://localhost:8080/vert.x—You should see hello vert.x
Producing Json
JSON 被经常使用于微服务,咱们修改以前的类来提供Json payload:
Vert.x 提供了 JsonObject 类来生成和操做 JSON 结构,若是你代码写的正确,那么你能够再浏览器打开以下地址:
• http://localhost:8080—You should see {"message": "hello"}
• http://localhost:8080/vert.x—You should see {"message":"hello vert.x"}
Packaging and Running
中止 vertx:run 执行能够用 Ctrl+C和在相同的目录下执行以下命令:
这个提供了一个 fat jar 在 target 目录下:hello- microservice-http-1.0-SNAPSHOT.jar,Jar 包的大小还算合理(~6.3 MB),包含全部运行应用所须要的资源。
你能够打开 http://local host:8080 地址检查应用是否正确运行,保持这个微服务运行,下个应用将会调用。
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什么讨论的内容,能够发我微信公众号: