响应式微服务 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/
有什么讨论的内容,可以发我微信公众号:
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/
有什么讨论的内容,可以发我微信公众号:
相关文章推荐
- 响应式微服务 in Java 译<五> --Verticles—the Building Blocks
- 响应式微服务 in java 译 这就是Reactive Microservices了吗?<九>
- 响应式微服务 in Java 译 --Asynchronous Development Model<四>
- 响应式微服务 in Java 译<七>
- 响应式微服务 in Java 译<一>
- 响应式微服务 in java 译<八>
- 响应式微服务 in Java 译 --理解响应式微服务和Vert.x<二>
- 响应式微服务 in Java 译 --reactive systems<三>
- 响应式微服务 in java 译 Message-Based Microservices<十>
- 响应式微服务 in java 译 <十一> Are We Reactive Now?
- 响应式微服务 in java 译 <十三> Stability and Resilience Patterns
- 响应式微服务 in java 译 <十四> Circuit Breakers
- 响应式微服务 in java 译 <十二> service discovery
- [coding] Threading differences in C# and Java
- Let us learn C in Code <4> _data type
- 使用Let's Encrypt证书签名服务创建Java Keystore(.jks)
- Exception in thread "main" expected '<document start>', but found BlockMappingStart in 'reader', line 23, column 2: nimbus.host: "master"
- 记录一次线上,ss服务出现大面积不能响应请求:java.io.IOException: Broken pipe
- Let us learn C in Code <10>
- java.lang.IllegalArgumentException: Invalid <url-pattern> toDo in