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

Building Reactive Microservices

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

First Microservices

在这里,我们会实现相同的微服务设置两次,第一个微服务暴露一个 hello 服务,然后我们将会调用这个服务,消费者我们叫做 hello 消费微服务,这个小系统不仅说明了服务如何送达,而且展示如何被消费。在图Figure 3-1,微服务使用 HTTP 实现,hello 消费者微服务使用 HTTP client 调用 hello微服务。在一个实现,hello 消费者微服务使用消息来和 hello 打交道,这种差异影响着系统的响应性。

bd36ce320b7f19eac3a8f2bda1a66f62.png

在之前的章节,我们使用了两种方式来使用 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 文件夹,然后构建项目结构:

615bde0dd87bdd774792d800a3b6dc3c.png

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

The Verticle

打开 src/main/java/io/vertx/book/http/HelloMicroser vice.java,自动生成的代码没干什么有意思的事情,仅仅只是个开始:

6094da6c786d85481cdb42bfb1741c09.png

现在,执行下面的 Maven 命令:

32905f619679ffa1e7ec1cdb721dd826.png

你可以编辑这个 Verticle,一旦你点击了保存,那么应用将会自动编译和重启。

HTTP Microservice

是时候让你的 MyVerticle类做点事情啦,我们先器写个 HTTP 服务,如你前面的章节一样,你仅仅用下面的代码就可以了:

47c2b9c3bcd791808a8e0894390fe56d.png

点了保存后,你可以在浏览器打开 http://localhost:8080 地址,这段代码创建一个8080端口的 HTTP 服务和注册了一个 requestHandler 用来处理 HTTP 请求,就现在而言,我们只是在 response 中写入了 hello。

Using Routes and Parameters

许多服务的响应是通过 Web URLs,因此检查路径就可以知道请求访问的是什么。然而,做路径检查请求处理程序requestHandler 实现不同的 actions 会变得很复杂。幸运的是,Vert.x Web 提供了 Router 注册的机制,让我们重写 start 方法,两个 routes:

63791416085c1001294884f12434f152.png

我们创建了 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和在相同的目录下执行如下命令:

6a6800f1774b6f370cb1f06a0395615b.png

这个提供了一个 fat jar 在 target 目录下:hello- microservice-http-1.0-SNAPSHOT.jar,Jar 包的大小还算合理(~6.3 MB),包含所有运行应用所需要的资源。

bffbeeb9b1229fffe9c7081945a30060.png

你可以打开 http://local host:8080 地址检查应用是否正确运行,保持这个微服务运行,下个应用将会调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值