vertx verticle】的更多相关文章

以下内容为随手记的,若看客不知鄙人所云,还请原谅则个.............. 公司用的vertx,在国内,这还是款比较年轻的框架,你也可以把他当做一个工具,官网上的说法是: Vert.x is a tool-kit for building reactiveapplications on the JVM. 公司一直用的标准的verticle,因为并没有什么长任务或阻塞任务的接口,所以一直没有使用worker verticle的强烈需求,即使后来简单重构,也只是用注解和反射外加封装,精简了项目…
DeploymentManager public DeploymentManager(VertxInternal vertx) { this.vertx = vertx; loadVerticleFactories(); } /** * ServiceHelper本质对jdk ServiceLoader的封装,vertx大量使用 SPI 扩展功能实现 */ private void loadVerticleFactories() { Collection<VerticleFactory> fa…
Vertx Future 异常处理 异常发生 ​ 在使用Vertx进行开发的时候,必不可免使用Future异步编程框架.通过Future的 compose ,可以轻松实现不同异步任务的组合. ​ 但是在每个异步任务的处理过程中,异常的处理是开发者不得不考虑和头疼的问题.无法预知的中断会导致某次任务突然停止在某个阶段.下面是Future代码Demo还原: private Promise<String> getResponse() { Promise<String> promise =…
背景 前几个月,使用Vertx重构了公司的一个子系统,该系统负责公司核心数据subscriber的采集.处理.存储和搜索.这里介绍下重构该系统时的一些关键点. 架构 重构前系统部署图: 重构前系统主要有2部分组成,这2部分都会对Subscriber数据操作: Java APP: 是个定时任务触发的APP,每2小时跑一次,每次启动后做以下的事情: 从MongoDB里加载已有的数据到内存. 读取准备好的Data文件,处理文件中的数据,和已加载的数据做合并,这个处理的过程会导致Subscriber数据…
Vertx Vert.x is a tool-kit for building reactive applications on the JVM.(Vertx是运行在JVM上用来构建reactive application的工具集) Vertx Design 响应式的(Responsive):一个响应式系统需要在合理的时间内处理请求. 弹性的(Resilient):一个响应式系统必须在遇到异常(崩溃,超时, 500 错误等等)的时候保持响应的能力,所以它必须要为异常处理 而设计. 可伸缩的(El…
前言 note: Context 与 EventLoop 关系 : N ; 每次创建一个vericles或者multi instances 通过EventLoopGroup.next挑出一个EventLoop,所以是1:N关系; context <=> verticle. 总结: .verticle和multi Instances总和不超过EventLoopSize,multi verticle在同一个EventLoop的 Thread上运行加大负担,如果造成线程阻塞会影响延时任务(Timer…
启动 public synchronized void listen(Handler<NetSocket> handler, SocketAddress socketAddress, Handler<AsyncResult<Void>> listenHandler) { //检验 if (handler == null) { throw new IllegalStateException("Set connect handler first"); }…
Start HttpServer /** * 启动 HttpServer * multi instances 采用 synchronized防止线程安全问题 * addHandlers 方法是actor模式的实现(EventLoopPoolSize >= instances): * 1 instances : 1 verticle(actor) : 1 VertxThread(Eventloop) */ public synchronized HttpServer listen(int port…
HAManager public HAManager(VertxInternal vertx, DeploymentManager deploymentManager, ClusterManager clusterManager, int quorumSize, String group, boolean enabled) { this.vertx = vertx; this.deploymentManager = deploymentManager; this.clusterManager =…
Vertx.vertx()实例 一.构造方法 1. VertxImpl构造方法 选择 transports protocol , default select 模型 if (options.getPreferNativeTransport()) { Transport nativeTransport = Transport.nativeTransport(); if (nativeTransport != null && nativeTransport.isAvailable()) { t…