第四章 重构为Vert.x服务
版权声明:本文为博主自主翻译,转载请标明出处。 https://blog.csdn.net/elinespace/article/details/804701531
与我们最早的实现相比,前面的重构已经是向前一大步,因为我们提取出了独立且可配置的Verticle,并且在事件总线之上使用异步消息进行链接。我们还看到,我们可以同时部署一个指定Verticle的几个实例,以便更好地处理负载以及更好地利用CPU内核。
在这一节,我们将看到如何设计和使用Vert.x服务。服务的主要优势是,它定义了一个接口用于执行Verticle公开的特定操作。对于所有事件总线消息工作,我们还可以利用代码生成,而不是像前一节那样自己创建它。
step-3/src/main/java/
└── io
└── vertx
└── guides
└── wiki
├── MainVerticle.java
├── database
│ ├── ErrorCodes.java
│ ├── SqlQuery.java
│ ├── WikiDatabaseService.java
│ ├── WikiDatabaseServiceImpl.java
│ ├── WikiDatabaseVerticle.java
│ └── package-info.java
└── http
└── HttpServerVerticle.java
io.vertx.guides.wiki现在包含主Verticle,io.vertx.guides.wiki.database包含数据库Verticle和服务,io.vertx.guides.wiki.http包含HTTP Server Verticle。
4.1 Maven配置变更
首先,我们需要添加下面两个依赖到我们的项目。很明显,我们需要vertx-service-proxy的API:
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-service-proxy</artifactId>
</dependency>
我们需要Vert.x代码生成模块作为一个编译时依赖(所以是provided范围):
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-codegen</artifactId>
<scope>provided</scope>
</dependency>
接下来,我们必须稍微调整一下maven-compiler-plugin的配置来使用代码生成,它通过一个javac注解处理器完成:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<useIncrementalCompilation>false</useIncrementalCompilation>
<annotationProcessors>
<annotationProcessor>io.vertx.codegen.CodeGenProcessor</annotationProcessor>
</annotationProcessors>
<generatedSourcesDirectory>${project.basedir}/src/main/generated</generatedSourcesDirectory>
<compilerArgs>
<arg>-AoutputDirectory=${project.basedir}/src/main</arg>
</compilerArgs>
</configuration>
</plugin>
注意,生成代码放置在src/main/generated目录下,一些集成开发环境诸如IntelliJ IDEA将自动识别为类路径。
更新maven-clean-plugin插件移除这些生成文件也是一个好注意:
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<filesets>
<fileset>
<directory>