Vert.x学习笔记(一) Vert.x 核心包

Vert.x是一个事件驱动的JVM上的框架,可以帮助我们构建现代、灵活、可扩展的程序。Vert.x有多种语言的版本,可以用在Java、Kotlin、Scala、Groovy、Ruby等语言上。当然现在讨论的是如何在Java上使用Vert.x。

Vert.x是一个比较大的框架,包含了各个方面的功能。所以我决定写几篇文章,分别来介绍这些功能。所以今天先来看看Vert.x最核心的一些功能吧,这些功能都在vertx-core包下。官方的英文文档在这里,本文参考和引用了Vertx官方文档上的一些内容,如果需要详细信息请直接看官方文档。当然我又发现了志愿者翻译的中文文档,质量也可以,只不过版本稍微落后一些。

Vert.x核心库包含了以下一些功能,它们都是比较底层的功能,开发者可以根据需要使用。当然由于Vert.x的功能很多,所以这里我不打算全部介绍,只准备介绍一些比较常用的功能。如果想了解全部功能的话,还是请参考官方文档。

  • TCP客户端和服务端
  • HTTP客户端和服务端以及WebSockets支持
  • 事件总线
  • 共享数据,包括本地maps以及分布式聚簇maps
  • 周期性和延迟操作
  • 数据报
  • DNS客户端
  • 文件系统访问
  • 高可用性
  • 聚簇

Vert.x的特点是事件驱动、流式编程和非阻塞,这些特点将会在后面逐一介绍。

引入依赖

如果使用Maven的话,在pom.xml中添加以下一段即可。

<dependency>
  <groupId>io.vertxgroupId>
  <artifactId>vertx-coreartifactId>
  <version>3.4.2version>
dependency>

如果使用Gradle的话,在build.gradle中添加以下一段。

dependencies {
  compile 'io.vertx:vertx-core:3.4.2'
}

开始使用

创建Vertx对象

要使用Vertx的第一步就是创建Vertx对象,所有API都要通过这个对象来调用。一般情况下,一个程序只需要一个Vertx对象即可,不过有时候为了程序隔离等原因,我们会需要多个Vertx对象。创建Vertx对象很简单,调用下面一行代码即可。

Vertx vertx = Vertx.vertx();

有时候可能需要对Vertx进行一些配置,可以通过添加程序参数来实现。

VertxOptions options = new VertxOptions();
options.setWorkerPoolSize(20);
Vertx vertx2 = Vertx.vertx(options);

Verticles

Verticles是Vertx中的一个模型,可以帮助我们封装代码。Verticles是一个可选的模型,所以即使我们不使用Verticles,也可以继续使用Vertx。Verticles说起来很简单,就是一个接口。当然实际情况下,一般都是继承AbstractVerticle抽象类。

public abstract class AbstractVerticle implements Verticle {
   

  protected Vertx vertx;

  protected Context context;
  @Override
  public Vertx getVertx() {
    return vertx;
  }
  @Override
  public void init(Vertx vertx, Context context) {
    this.vertx = vertx;
    this.context = context;
  }

  public String deploymentID() {
    return context.deploymentID();
  }
  public JsonObject config() {
    return context.config();
  }
  public List processArgs() {
    return context.processArgs();
  }
  @Override
  public void start(Future startFuture) throws Exception {
    start();
    startFuture.complete();
  }
  @Override
  public void stop(Future stopFuture) throws Exception {
    stop();
    stopFuture.complete();
  }
  public void start() throws Exception {
  }
  

你可能感兴趣的:(java,vertx,java,vertx)