zoukankan      html  css  js  c++  java
  • Vert.x初体验

    源码:https://github.com/dagger9527/vertx_demo

    项目工程:quickstart

    vert.x最大的特点是异步编程、非阻塞式。非阻塞式的方式可以让单线程以最大的效率处理客户端请求,最大幅度的利用单核处理器的优势。和多线程编程的方式不同,异步编程是单线程的,它在接收一个请求时,会将这个请求作为一个任务放到循环事件队列中,然后在后台依次执行队列中的任务,它不会阻塞后来的请求,所有对请求的处理操作都在后台完成。

    添加maven依赖

    <dependencies>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-core</artifactId>
        </dependency>
    </dependencies>
    

    创建一个异步服务器,需要创建一个类然后继承AbstractVerticle,重写其中的start方法,需要在start方法中创建http服务器。

    属性vertx在AbstractVerticle中是已经定义的,可以直接使用,它代表的当前Verticle的实例对象。

    HttpServerOptions类是创建Http服务器的配置类,设置服务器启动端口是8080。

    requestHandler方法是处理请求的逻辑实现,响应内容为Hello World,注意最后的end方法不能少,不然客户端会一直等待响应。

    public class MainVerticle extends AbstractVerticle {
    
      private Logger logger = LoggerFactory.getLogger(MainVerticle.class);
    
      @Override
      public void start() throws Exception {
        // 创建一个http服务器,并监听8080端口
        vertx.createHttpServer(
          new HttpServerOptions()
            .setPort(8080)
        ).requestHandler(request -> {
          request
            .response()
            .putHeader("Content-Type", "text/html;charset=UTF-8")
            .end("<h1>Hello World</h1>");
        }).listen();
        logger.info("MainVerticle Server Starting..");
      }
    
    }
    

    Verticle实现类有了之后,需要一个main方法去启动它。

    再创建一个vertx对象,通过deployVerticle部署刚刚的Verticle实例。

    public class MainLauch {
    
      public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        vertx.deployVerticle(MainVerticle.class.getName());
      }
    
    }
    

    运行main方法,可以看到控制台打印日志,说明http服务已启动。访问本地8080端口。

    image-20200128104422795

    image-20200128104506833

    将服务打包成一个jar包

    继续添加 maven-shade-plugin 插件

    Main-Class标签声明main方法所在类

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>${maven.shade.plugin.version}</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <manifestEntries>
                                <Main-Class>${main.class}</Main-Class>
                            </manifestEntries>
                        </transformer>
                    </transformers>
                    <artifactSet />
      	              <outputFile>${project.build.directory}/${project.artifactId}.jar</outputFile>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    在quickstart项目命令行下运行 mvn clean install,当前target目录下发现quickstart.jar,运行java -jar quickstart.jar,再次访问本地8080端口,发现服务正常启动。

    注意当前http服务打包成jar文件之后,响应给浏览器会有中文乱码问题。但是用idea启动却没有这个问题,如果有人知道答案请在评论后方留言,感激不尽。

    参考:https://vertxchina.github.io/vertx-translation-chinese/start/Start.html

  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/dagger9527/p/12237563.html
Copyright © 2011-2022 走看看