`
cywhoyi
  • 浏览: 420992 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Vertx与Spring配合完成DML操作

阅读更多

前言

vertx相较于Tomcat不同之处

引用oschina上关于vertx的文章,感觉他说得非常明白,不在这里过多讨论,这里我简单说明下如何在vertx和spring配合完成基础任务。

 

服务启动:

  public static void main( String[] args ) {
    ApplicationContext context = new AnnotationConfigApplicationContext(SimpleSpringConfiguration.class);
    final Vertx vertx = Vertx.vertx();
    vertx.deployVerticle(new SpringSimpleVerticle(context));
    vertx.deployVerticle(new ServerVerticle());
  }

 

 EventBus接受给Service:

public class SpringSimpleVerticle extends AbstractVerticle {

    public static final String ALL_PRODUCTS_ADDRESS = "example.all.products";


    private final ObjectMapper mapper = new ObjectMapper();
    private final ProductService service;

    public SpringSimpleVerticle(final ApplicationContext context) {

        service = (ProductService) context.getBean("productService");

    }

    private Handler<Message<String>> allProductsHandler(ProductService service, String name) {
        return ms2g -> vertx.<String>executeBlocking(future -> {
                    try {
                        future.complete(mapper.writeValueAsString(service.getAllProducts(ms2g.body())));
                    } catch (JsonProcessingException e) {
                        System.out.println("Failed to serialize result");
                        future.fail(e);
                    }
                },
                result -> {
                    if (result.succeeded()) {
                        ms2g.reply(result.result());
                    } else {
                        ms2g.reply(result.cause().toString());
                    }
                });
    }

    @Override
    public void start() throws Exception {
        super.start();

        System.out.println("<<<<<<<<<<<<<<<<<<<<<<< CONSUMER >>>>>>>>>>>>>>>>>>>>>>>>>");
        vertx.eventBus().<String>consumer(ALL_PRODUCTS_ADDRESS).handler(allProductsHandler(service, "message"));

    }
}

 传统Service+Dao

@Service
public class ProductService {

    @Autowired
    private ProductRepository repo;

    public List<Product> getAllProducts(String productId) {
        System.out.println("productid : " + productId);
        return repo.findAll();
    }

    public void getProduct(String productId) {
        System.out.println("productid : " + productId);
    }

}

 

端口监听:

public class ServerVerticle extends AbstractVerticle {

  @Override
  public void start() throws Exception {
    super.start();
    HttpServer server = vertx.createHttpServer();
    server.requestHandler(req -> {
      if (req.method() == HttpMethod.GET) {
        req.response().setChunked(true);

        if (req.path().equals("/products")) {
          vertx.eventBus().<String>send(SpringSimpleVerticle.ALL_PRODUCTS_ADDRESS, "123456", result -> {
            if (result.succeeded()) {
              req.response().setStatusCode(200).write(result.result().body()).end();
            } else {
              req.response().setStatusCode(500).write(result.cause().toString()).end();
            }
          });
        } else {
          req.response().setStatusCode(200).write("Hello from vert.x").end();
        }

      } else {
        // We only support GET for now
        req.response().setStatusCode(405).end();
      }
    });

    server.listen(8080);
  }
}

 

结论:

DML操作基本都是类似的做法,但是观念的改变其实很大,传统烟囱的方式=》基于消息、事件的方式转移

5
4
分享到:
评论

相关推荐

    基于Vertx与Spring Boot整合的响应式Web服务设计源码

    该项目为基于Vertx与Spring Boot整合的响应式Web服务设计源码,共计2901个文件,涵盖1937个Java源文件、344个XML配置文件、332个PNG图像文件、29个JavaScript文件、24个Git忽略文件、23个SO库文件、21个JPG图像文件...

    vertx-vs-spring-reactor:一个基准,比较使用Groovy,Vertx和vertx-redis-client与Groovy,Spring Reactor和生菜制作的Web服务

    我想看看新的闪亮(好吧,不是真的)Spring Reactor与Vert.x的比较 这两个软件包都是用Groovy编写的。 这个想法是将9 hash get命令发送给redis。 这是通过以下方式完成的: 在vert.x示例中,使用Vertx-Redis-...

    vertx-mybatis-spring-async-1.1.5-SNAPSHOT.jar

    vertx-mybatis-spring-async jar包

    vertx for springboot

    【标题】:“vertx for springboot”:将Vert.x与Spring Boot融合的高效微服务实践 在当前的软件开发环境中,Spring Boot以其简洁的配置、快速的开发效率以及丰富的生态系统,已经成为Java领域的主流微服务框架。...

    spring-boot-vertx:Spring Boot和Vertx 3.0示例

    Spring Boot和Vertx Vert.x SpringBoot示例显示了如何将Vert.x嵌入到SpringBoot应用程序中。 要求 2. maven and jdk 8 从源头建造 使用github主页上的URL克隆git存储库: $ git clone ...

    vertx-spring-data:Spring Data(JPA、MongoDB 等)的 vertx mod

    顶点弹簧数据Spring Data(JPA、MongoDB 等)的 Vertx mod ###mod-spring-data 这个允许您在 Vert.x 应用程序中使用 Spring Data,从而可以直接使用 JPA、MongoDB 等。 ###Sample applications 提供了示例以展示如何...

    javascript Vertx开发教程

    JavaScript Vertx开发教程 在现代Web开发中,Vert.x是一个重要的工具,它是一个轻量级、反应式的事件驱动框架,专为构建分布式系统而设计。本教程将深入探讨如何使用JavaScript来利用Vert.x的强大功能,以创建高效...

    分布式游戏服务端 Vertx3

    2. **Vertx3与游戏服务端**: - **高并发**:游戏服务端需要处理大量玩家的并发请求,Vert.x的非阻塞I/O模型能有效应对这种情况。 - **实时性**:游戏需要实时交互,Vert.x的低延迟特性确保了玩家间的快速响应。 ...

    vertx-core-3.9.0-API文档-中文版.zip

    赠送jar包:vertx-core-3.9.0.jar; 赠送原API文档:vertx-core-3.9.0-javadoc.jar; 赠送源代码:vertx-core-3.9.0-sources.jar; 赠送Maven依赖信息文件:vertx-core-3.9.0.pom; 包含翻译后的API文档:vertx-core...

    vertx学习示例

    7. **工具与生态**:除了核心库,Vertx还有一系列配套工具,如vertx-codegen用于代码生成,vertx-reactive-streams用于与Reactive Streams兼容的库交互,以及vertx-docgen用于生成API文档。丰富的生态系统为开发者...

    vertx集成mybatis架构

    【标题】:“vertx集成mybatis架构” 在Java开发领域,Vert.x是一个高度可扩展的、非阻塞的事件驱动框架,它适用于构建现代的、响应式的后端应用。MyBatis则是流行的持久层框架,提供了灵活的SQL映射机制和对象关系...

    vertx-web-3.9.0-API文档-中文版.zip

    赠送jar包:vertx-web-3.9.0.jar; 赠送原API文档:vertx-web-3.9.0-javadoc.jar; 赠送源代码:vertx-web-3.9.0-sources.jar; 赠送Maven依赖信息文件:vertx-web-3.9.0.pom; 包含翻译后的API文档:vertx-web-...

    Vertx-Web初探

    ### Vertx-Web初探 #### 一、项目概述与准备 ##### 1.1 基本项目结构 为了确保项目的顺利进行,首先需要创建一个Maven项目,并且按照以下结构组织: - 源代码包:`src/main/vertx` - 资源路径:`src/main/...

    java8看不到源码-spring-vertx-ext:一个springvertxmod,它创建了弹簧感知的verticles

    模块名称是jacpfx.vertx.spring (请注意包含 spring 依赖项,例如“需要 spring.context;”) 将 Vert.x 更新到 3.5.1 版 将 Spring 更新到 5.0.5.RELEASE 版本 用法 将 spring-vertx-ext 依赖项添加到您的项目中,...

    Spring Cloud+Vertx+Disruptor 金融业撮合交易系统实战

    ### Spring Cloud+Vertx+Disruptor 金融业撮合交易系统实战 #### 一、Spring Cloud简介与在金融撮合交易系统中的应用 Spring Cloud 是一套基于 Spring Boot 的微服务框架,它为开发者提供了在分布式系统(如配置...

    vertx_example+springboot_example+maven 开发模板

    【标题】"vertx_example+springboot_example+maven 开发模板"揭示了这是一个结合了Vert.x、Spring Boot和Maven的开发项目模板。这个模板旨在为开发者提供一个基础框架,以便快速搭建分布式、高并发的应用。 【Vert....

    vertx-assistant:顶点助手

    Vert.x助手 专案 vertx-web:构建带有注释的Web服务; vertx-starter:用于弹簧启动的vertx starter项目; 版本号 vertx-web maven描述: ... &lt; artifactId&gt;vertx-spring-boot-starter&lt;/ artifact

    vertx-web-3.9.0-API文档-中英对照版.zip

    赠送jar包:vertx-web-3.9.0.jar; 赠送原API文档:vertx-web-3.9.0-javadoc.jar; 赠送源代码:vertx-web-3.9.0-sources.jar; 赠送Maven依赖信息文件:vertx-web-3.9.0.pom; 包含翻译后的API文档:vertx-web-...

    vertx-core-3.9.0-API文档-中英对照版.zip

    赠送jar包:vertx-core-3.9.0.jar; 赠送原API文档:vertx-core-3.9.0-javadoc.jar; 赠送源代码:vertx-core-3.9.0-sources.jar; 赠送Maven依赖信息文件:vertx-core-3.9.0.pom; 包含翻译后的API文档:vertx-core...

    vertx-bridge-common-3.9.0-API文档-中文版.zip

    赠送jar包:vertx-bridge-common-3.9.0.jar; 赠送原API文档:vertx-bridge-common-3.9.0-javadoc.jar; 赠送源代码:vertx-bridge-common-3.9.0-sources.jar; 赠送Maven依赖信息文件:vertx-bridge-common-3.9.0....

Global site tag (gtag.js) - Google Analytics