Let’s Start Coding!java
是到了处理脏活的时候了,咱们将会使用 Apache Maven 和 Vert.x Maven 插件来开发咱们的项目,然而,你也能够选择任何其余的构建工具(Gradle,Apache Maven 的其余包插件,或 Apache Ant),你还能够看到不一样的例子在(packaging-examples directory),这个章节看到的代码在 hello-vertx 文件夹中。react
Project Creationweb
建立一个 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 应用而且能够观察代码的改变。所以,若是你编辑源代码,应用将会自动编译并重启。app
让咱们看一下应用的输出:
看到这个请求被 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/
有什么讨论的内容,能够发我微信公众号: