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

响应式微服务 in Java 译<六> --Let’s Start Coding!

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

Let’s Start Coding!

是到了处理脏活的时候了,我们将会使用 Apache Maven 和 Vert.x Maven 插件来开发我们的项目,然而,你也可以选择任何其他的构建工具(Gradle,Apache Maven 的其他包插件,或 Apache Ant),你还可以看到不同的例子在(packaging-examples directory),这个章节看到的代码在 hello-vertx 文件夹中。

Project Creation

创建一个 my-first-vertx-app 文件夹:



然后执行下面的命令:



这个命令生成 Maven 项目架构,配置vertx-maven-plugin,并且创建了一个 verticle 类(io.vertx.sam ple.MyFirstVerticle),当然它没有做任何事情。

Write Your First Verticle

现在开始编写你的第一个 verticle ,修改 src/main/java/io/vertx/sample/MyFirstVerticle.java 文件,加上一下内容:



运行这个应用,载入:



如果一切正常,你将会在浏览器的http://localhost:8080地址下看到应用,vertx:run 命令运行 Vert.x 应用并且可以观察代码的改变。因此,如果你编辑源代码,应用将会自动编译并重启。

让我们看一下应用的输出:



看到这个请求被 event loop 0 处理,你可以尝试发送更多的请求,这些请求将会被同一个 event loop 处理,加强了 Vert.x 的并发模型,点击 Ctrl+C 停止执行。

Using RxJava

在这个观点下,我们看一下 Vert.x 为 RxJava 提供了支持更好地理解它怎么工作的,在你的 pom.xml 文件中,我们加入以下依赖:



接下来,改变 <vertx.verticle> 属性到 io.vertx.sam ple.MyFirstRXVerticle ,这个属性告诉 Vert.x Maven 插件哪一个 verticle 是应用的 entry point 。创建新的 verticle 类(io.vertx.sample.MyFirstRXVerticle):



Vert.x APIs 包中提供的 RxJava 变量与 rxjava 取相同的名字,RxJava 方法以 rx 作为前缀,例如 rxListen 。此外,API是增强方法提供可观察的对象,你可以订阅接收数据。

Packaging Your Application as a Fat Jar

Vert.x Maven 插件将应用打包成一个 jar 包,一旦打包好,你可以简单的用 java -jar <name>.jar 启动应用:



应用起来后,监听相应的端口,使用 Ctrl+C 关闭。

作为一个开放式的工具集,Vert.x 不推荐一个包去包另一个--你可以使用你喜欢的包装模式。例如,你可以使用 fat jars ,在一个特定目录放包的信息用于访问,或者打包成一个 war然后编程启动Vert.x。

在这个章节中,我们使用 fat jars ,JAR嵌入应用程序中,还有资源,所有的依赖。这个包含 Vert.x ,你使用的 Vert.x 组件和依赖,这使你更容易理解应用的启动,依赖顺序和日志。更重要的是这减少了在生产环境的移动次数(moving piece),你不用将应用程序部署到现有的应用程序服务器,一旦打包到 fat jar 中,应用只要考虑 java -jar <name.jar> 就好了,Vert.x Maven 插件为你构建了一个 flat jar,但你也可以使用其他的 maven 插件,例如 maven-shader-plugin。

Logging, Monitoring, and Other Production Elements

打包成 fat jar 对微服务和其他类型的应用来说是一种很好的打包模型,以简化了部署和启动。但我们的特性通常由应用程序提供,怎么确定生产环境已经准好?典型地,我们希望可以输出和收集日志,监控应用,推送外部配置,健康检查等等。

不用操心--Vert.x 提供了这些特性,因为 Vert.x 功能是比较宽泛的,提供了多种可以选择,可以选择使用或者使用你自己的实现。例如日志,Vert.x 并没有要求使用一种日志框架,允许你使用任何一种你想用的日志模型,例如Apache Log4J 1 or 2, SLF4J, or even JUL (the JDK logging API)。如果你对 Vert.x 自身的消息日志,内置 Vert.x logging 可以由其他的日志框架配置。监控 Vert.x 应用和这个 JMX 已经帮我们做好了,Vert.x Dropwizard Metric 模块提供了 JMX 方法。你也可以选择将这些指标来监控服务器,例如Prometheus (https://prometheus.io/)或者CloudForms (https://www.redhat.com/en/ technologies/management/cloudforms)

Summary

在这个章节中,我们学习了什么是响应式服务和 Vert.x ,你也创建了你的第一个 Vert.x 应用 。这一章不是一个全面的指导,只是提供了一个快速的主要概念的介绍。如果你想进一步理解这些主题,你可以下面了解的资源:

Reactive programming vs. Reactive systems

The Reactive Manifesto

RxJava website

Reactive Programming with RxJava

The Vert.x website

原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/


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

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