盘锦市政建设集团网站,怎么创建私人网站,网站开发工具论文,网站建设后台管理一、什么是verticle
verticle是vertx的基本单元#xff0c;其作用就是封装用于处理事件的技术功能单元 #xff08;如果不能理解#xff0c;到后面的实战就可以理解了#xff09;
二、写一个verticle
1. 引入依赖#xff08;这里用的是gradle#xff0c;不会吧#…一、什么是verticle
verticle是vertx的基本单元其作用就是封装用于处理事件的技术功能单元 如果不能理解到后面的实战就可以理解了
二、写一个verticle
1. 引入依赖这里用的是gradle不会吧不会吧都学这个了还有人不会gradle 0.0
plugins {
java
}
repositories {
mavenCentral()
}
dependencies {
implementation(io.vertx:vertx-core:VERSION)
implementation(ch.qos.logback:logback-classic:1.2.3)
}
tasks.createJavaExec(run) {
main project.properties.getOrDefault(mainClass,chapter2.hello.HelloVerticle) as String
classpath sourceSets[main].runtimeClasspath
systemProperties[vertx.logger-delegate-factory-class-name] io.vertx.core.logging.SLF4JLogDelegateFactory
}
java {
sourceCompatibility JavaVersion.VERSION_1_8
}
logback.xml 文件
configuration
appender nameSTDOUT classch.qos.logback.core.ConsoleAppender
encoder
pattern%level [%thread] %logger{0} - %msg%n/pattern
/encoder
/appender
logger nameio.netty levelwarn/
root leveldebug
appender-ref refSTDOUT/
/root
/configuration
代码
package org.example;import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServerOptions;public class Tearch extends AbstractVerticle {Overridepublic void start() throws Exception {vertx.createHttpServer(new HttpServerOptions().setPort(8080)).requestHandler(req-{req.response().end(hello word);}).listen();}public static void main(String[] args) {Tearch tearchnew Tearch();Vertx vertx1Vertx.vertx();vertx1.deployVerticle(tearch);}
}好现在让我们想一下
当事件循环被阻塞时会发生什么?
答案会报错它那个有个超时检测不信你可以让它执行一个whlietrue,这里忘记说了setTimer是延迟任务 设置检测时间 在存在异步初始化工作的情况下如何延迟生命周期完成的通知? 答使用Async.await()方法等待异步操作完成。或者用public void start(Promise promise) 这个有应答的方法具体操作如下 在这里我先声明如下这里的所有截图都是采自vert.x in Action的那本入门英语书
三、一个verticle的部署和卸载 在一个定时任务中可以通过deplay方法进行部署 自然也是可以通过定时任务进行卸载
四、接下来我们讲vertx的线程模型
默认情况下为Vert.x创建的事件循环线程数是CPU内核数的两倍。如果你有8个核心,那么一个Vert.X应用程序有16个事件循环。
这给了我们一个有趣的教训:虽然一个verticle总是使用相同的事件循环线程但事件循环线程是由多个verticle共享的。这种设计使运行应用程序的线程数量可预测。 提示:可以调整可用的事件循环数量但不可能手动为特定事件循环分配给定的垂直方向。这在实践中不应该是一个问题但在最坏的情况下您总是可以计划顶点的部署顺序。 在 Vert.x 中所有的事件处理器都运行在一个事件循环线程池中称为 Event Loop。Event Loop 是一个单线程负责接收、分发和处理事件。
当一个事件到达时Vert.x 会将事件分派给空闲的 Event Loop 线程进行处理。Event Loop 会按照注册的事件处理器顺序依次执行并且在执行过程中不会被阻塞。如果某个事件处理器需要执行一个耗时的操作可以将其委托给 Worker 线程池进行处理以免阻塞 Event Loop。
Worker 线程池是一个可配置的线程池用于执行耗时的操作。通过将耗时的操作委托给 Worker 线程池可以避免阻塞 Event Loop提高系统的并发性能。 总结起来Vert.x 的线程模型使用了事件循环和异步编程模型通过 Event Loop 和 Worker 线程池来处理事件并发和耗时操作以提高系统的吞吐量和响应性能。 五、传递配置参数如下 从代码上看就是 deployVerticle里面多加了一个配置参数。