zoukankan      html  css  js  c++  java
  • Dubbo中CompletableFuture异步调用

    使用Future实现异步调用,对于无需获取返回值的操作来说不存在问题,但消费者若需要获取到最终的异步执行结果,则会出现问题:消费者在使用Future的get()方法获取返回值时被阻塞。为了解决这个问题,Dubbo又引入了CompletableFuture来实现对提供者的异步调用

    一、创建提供者10-provider-async2

    A、创建工程

    直接复制10-provider-async工程,并命名为10-provider-async2

    B、修改业务接口

    需要异步调用执行的方法返回CompletableFuture<>

    C、修改实现类

    二、 创建消费者10-consumer-async2

    A、创建工程

    直接复制10-consumer-async工程,并命名为10-consumer-async2

    B、修改业务接口

    C、修改消费者类

    直接删除同步消费者类,修改异步消费者类

    D、修改配置文件

    三、总结

    Future与CompletableFuture的对比

    • Future:Dubbo2.7.0版本之前消费者异步调用提供者的实现方式。源自于JDK5,对异步结果的获取采用了阻塞与轮询方式。
    • CompletableFuture:Dubbo2.7.0版本之后消费者异步调用提供者的实现方式。源自于JDK8,对异步结果的获取采用了回调的方式
  • 相关阅读:
    Eureka实现注册与发现
    SpringBoot之彩色输出
    SpringBoot之简单日志配置
    SpringBoot之文件读取
    springboot之banner
    记一下一个我误解的小特性
    spring4新特性-泛型依赖注入
    boot之mybatis
    springmvc之单元测试(MockMvc)-独立测试
    git ignore
  • 原文地址:https://www.cnblogs.com/edda/p/13260432.html
Copyright © 2011-2022 走看看