Vert.X使用笔记
Vert.X使用笔记(一)
- 一、开发环境
- 二、官方文档
- 三、vert.x概述
- 1、vertx-core
- 四、Hello World
- 1、生成工程
- 2、打开工程
- 3、编写启动类
- 4、启动项目
- 5、另一种启动方法
- 四、理解示例程序
- 五、概念
- 1、事件驱动
- 2、非阻塞
- 3、链式循环处理
- 4、未来(future)
- 5、verticle
- 6、event bus
- 六、使用案例
- 1、定时执行
- 七、插曲
- Apache Ignite
一、开发环境
- 框架 VERTX_VER = 3.9.4 - 日志 LOGBACK_VER = 1.2.3 - 语言 GROOVY_VER = 2.4.12 - 数据库连接 HIKARICP_VER = 2.7.2 - 数据库驱动 MSSQLJDBC_VER = 6.2.2.jre8 - 数据库驱动 POSTGRESQL_VERS=42.2.6 - 数据库驱动 HBASE_VER = 1.3.1 - 数据解析 JSON_VERSION=20160810
二、官方文档
官方文档
建议:官方文档形象但不步骤不详细,可以看看这个文档database
三、vert.x概述
是一个基于NETTY的事件驱动框架
包含许多模块
- vertx-core
- vertx-web
- vertx-ignite
- vertx-tcp-eventbus-bridge
- vertx-jdbc-client
1、vertx-core
实质:封装了一系列java的API,包含:
- java tcp server、client;
- java HTTP server 、client;
- java Websocket;
- java eventbus;
- java file system
- 等等
四、Hello World
1、生成工程
官方的工程生成器
注意: 1、选择java版本,否则默认java11
2、打开工程
出现maven pom文件报错
解决办法:
<plugins><plugin><groupId>org.apache.maven.plugins</groupId>//添加此行<artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version></plugin>
3、编写启动类
新建一个类 psvm生成主函数
写入以下语句
Vertx vertx = Vertx.vertx();vertx.deployVerticle(new MainVerticle());
4、启动项目
浏览器打开http://127.0.0.1:8888/
5、另一种启动方法
无需添加主函数,直接使用依赖中的主函数
1、观察pom文件
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version><maven-shade-plugin.version>3.2.4</maven-shade-plugin.version><maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version><exec-maven-plugin.version>3.0.0</exec-maven-plugin.version><vertx.version>4.3.3</vertx.version><junit-jupiter.version>5.7.0</junit-jupiter.version><main.verticle>helloworld.MainVerticle</main.verticle>//这是主vertx程序<launcher.class>io.vertx.core.Launcher</launcher.class>//这是vertx启动程序</properties>
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>${exec-maven-plugin.version}</version><configuration><mainClass>io.vertx.core.Launcher</mainClass><arguments><argument>run</argument> //启动命令是run<argument>${main.verticle}</argument>//查看上面prop</arguments></configuration></plugin>
如果是gradle工程
shadowJar {baseName = 'mes-dataaccess'classifier = nullversion = nullmanifest {attributes 'Main-Class': 'Launcher'//启动类attributes 'Main-Verticle': 'MainVerticle'//主处理程序}mergeServiceFiles {include 'META-INF/services/io.vertx.core.spi.VerticleFactory'}
}
可以在IDEA中配置启动选项以启动
然后使用IDEA 启动
四、理解示例程序
package helloworld;import io.vertx.core.AbstractVerticle;
import io.vertx.core.MultiMap;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;public class MainVerticle extends AbstractVerticle {//vertx对象启动时调用的方法,startPromise是监听对象@Overridepublic void start(Promise<Void> startPromise) throws Exception {//启动时创建一个http serve 监听8888端口 vertx.createHttpServer().requestHandler(req -> {req.response().putHeader("content-type", "text/plain").end("Hello from Vert.x!");}).listen(8888, http -> {//体现了vertx的事件驱动,if (http.succeeded()) {//将startPromise状态置为完成startPromise.complete();System.out.println("HTTP server started on port 8888");} else {startPromise.fail(http.cause());}});}}
五、概念
1、事件驱动
当一些事件发生,vertx会主动发送事件呼叫,例如计时结束、有http请求等,当事件发生,vertx会异步调用
2、非阻塞
vertx本身不会阻塞线程,除非用户设置了阻塞方法,传统的等待使得线程利用率低,并发情况需要多个线程等待,内存消耗大;
3、链式循环处理
vertx实际基于netty netty就有循环处理的概念,vertx将其复用重写,一个事件会经过多到处理程序,每个vertx实例都维护多个事件循环
4、未来(future)
这是vertx4的特性,与netty一致,vertx3使用的回调
5、verticle
相当于一个处理机,一般来说我们直接集成抽象类AbstractVerticle ,重写start、stop方法
start方法在 一个处理机生成时就调用,该方法完成时,Verticle 将被视为已启动
stop方法在 一个处理取消部署时调用,并且当方法完成时,Verticle 将被视为已停止
6、event bus
待续
六、使用案例
1、定时执行
vertx.setPeriodic(1000, -> {...});
定时一秒执行后续程序
七、插曲
Apache Ignite
添加链接描述
Vert.X使用笔记相关推荐
- Vert.x学习笔记(一) Vert.x 核心包
Vert.x是一个事件驱动的JVM上的框架,可以帮助我们构建现代.灵活.可扩展的程序.Vert.x有多种语言的版本,可以用在Java.Kotlin.Scala.Groovy.Ruby等语言上.当然现在 ...
- Vert.x 学习笔记
一.概述 Vert.x(http://vertx.io)是一个基于JVM.轻量级.高性能的应用平台,非常适用于最新的移动端后台.互联网.企业应用架构. Vert.x是基于大名鼎鼎netty的异步的工具 ...
- vert.x笔记:4.vert.x中调用spring服务
evenbus事件总线介绍: 在介绍怎么在vert.x中集成spring服务前,我们要先简单介绍一下什么是vert.x的事件总线. eventbus是vert.x的神经总线,每个vert.x实例维护了 ...
- vert.x笔记:3.使用vert.x发布restful接口
原文及更多文章请见个人博客:http://heartlifes.com vert.x重要概念介绍: 在第2偏笔记中,我们写了第一个vert.x的hello world代码,这里,我们把代码中用到的几个 ...
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- 机器学习总结——机器学习课程笔记整理
机器学习笔记整理 说明 基础点整理 1. 基础数学知识 (1) 一些零七八碎的基础知识 (2) 最优化相关问题 (3) 概率论相关问题 (4) 矩阵相关问题 2. 回归(线性回归.Logistic回归 ...
- 深度学习(三十五)异构计算GLSL学习笔记(1)
异构计算GLSL学习笔记(1) 原文地址:http://blog.csdn.net/hjimce/article/details/51475644 作者:hjimce 最近开始学习深度学习的一些gpu ...
- AI学习笔记(十二)物体检测(上)
AI学习笔记之物体检测(上) 物体检测简介 常见检测网络 IOU TP.TN.FP.FN precision(精确度)和recall(召回率) 边框回归 边框回归具体方法 Selective Sear ...
- 西瓜书第三章阅读笔记
西瓜书第三章阅读笔记 第三章 线性模型 1.机器学习三要素 2.基本形式 3.线性回归 3.1 模型 3.2 策略 3.3 求解算法 4.对数几率回归 4.1 模型 4.2 策略 4.3 求解算法 5 ...
最新文章
- 牛腩知识小结-盒子模型
- Elasticsearch 100问(上)
- PHP 4 中对象的比较
- opencv4.0在linux下编译,Ubuntu 18.04源码编译安装OpenCV 4.0步骤
- 阿里云官方网站免费套餐怎么抢
- pgsql中float4导致java程序精度丢失_Java基础系列02
- hashcat 基本使用
- 一条SQL引发的“血案”:与SQL优化相关的4个案例
- Flash、Ajax各自的优缺点,在使用中如何取舍?
- 软件系统设计-13-质量属性
- matlab中的imnoise信噪比,matlab语法fn=imnoise(f,'gaussian',0,0.02)是给f添加高斯噪声,其中数值0和0.02分别表示___和___?...
- opencv立方体的画法_opencv几何图形画法
- 魔百盒CM311-1_S905L3芯片_YST代工_红外蓝牙语音_安卓9.0_线刷固件包
- 计算机动漫游戏与制作,计算机动漫与游戏制作标准规范.doc
- kodi安卓4.0版及中文插件安装方法
- linux命令总结-ls
- AMD发布4.06.10.651版芯片组驱动 修复安装器无响应问题
- Bad attr `wx... Bad Value with message... uni-app报错合集
- Android 刻度表的实现
- 书虫小说在线阅读网站