您的位置:首页 > 编程语言 > Java开发

响应式微服务 in Java 译<七>

2018-01-10 00:00 357 查看
摘要: 响应式微服务 in Java

Building Reactive Microservices

在这个章节中,我们将会构建我们的第一个 Vert.x 微服务,就像大多数微服务系统一样我们使用HTTP提供微服务,但因为系统包含多个微服务之间的交互,我们将构建另一个微服务系统来消费上一个微服务,然后,我们会展示为什么这样的设计并没有完全实现响应式微服务。最后,我们将实现以消息为基础的微服务,看消息机智怎么改良我们的响应式。

First Microservices

在这里,我们会实现相同的微服务设置两次,第一个微服务暴露一个 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 文件夹中。

Getting Started

创建一个 hello-microservice-http 文件夹,然后构建项目结构:



这个命令生成 Maven 项目结构和配置 Vert.x Maven 插件,以及增加了 vertx-web 依赖,Vert.x Web 模块提供了基本提供了所有在Vert.x上构建现代 Web 应用的东西。

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/


有什么讨论的内容,可以发我微信公众号:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息