我们项目中常见场景,java应用内部接口都是使用dubbo,某个非java应用需要调用我们的接口的时候,无法使用dubbo,这是我们需要给它提供其他形式的接口,如restful api等等,这时我们需要为这个接口开发而增加额外的工作量。这时候就可以使用dubbo提供的GenericService来调用dubbo接口了,而使用GenericService调用接口的好处是不需要依赖服务提供方给的interface,只需要知道接口的全类名,方法名,参数列表就能调用dubbo方法,拿到返回值,这种调用称为泛化调用。

我们先看看GenericService里面的方法只有一个$invoke;

package com.alibaba.dubbo.rpc.service;

public abstract interface GenericService

{

public abstract Object $invoke(String paramString, String[] paramArrayOfString, Object[] paramArrayOfObject)

throws GenericException;

}

具体的使用方法如下:

我们先定义接口和实现:

public interface TestService{

public String test1(String arg);

}

public class TestServiceImpl impliments TestService{

public String test1(String arg){

return "TestService.test:" + arg;

}

}

泛化调用的使用GenericService方法如下:

ApplicationConfig application = new ApplicationConfig("test-generic-dubbo");//参数为dubbo消费方的名称

ReferenceConfigreference = new ReferenceConfig();

application.setRegistry(dubboPropperties.getRegistry());//注册中心的配置,这个我们可以在spring的bean中拿到dubboProperties,全类名为:io.dubbo.springboot.DubboProperties

reference.setApplication(application);

reference.setInterface(“com.xxx.TestService”);//dubbo接口的全类名

reference.setGroup("my-group");//dubbo的group

reference.setVersion("1.0.0");//dubbo的版本号

reference.setTimeout(3000);//dubbo调用的超时时间 单位:ms

reference.setGeneric(true);//是否支持泛化调用,我们这里肯定要设置为true

GenericService genericService = reference.get();//获取genericService

Obect object = genericService.$invoke("test1",{"java.lang.String"},{"hello"});//调用泛化接口

System.out.println(object);//返回接口输出为:TestService.test:hello

java impliments,dubbo使用GenericService泛化调用相关推荐

  1. Apache Dubbo系列:泛化调用

    上一章,我们讲到了Dubbo的线程池策略,本章我们一起探讨,Dubbo如何实现泛化调用的.主要内容包括: 1.什么是泛化调用 2.泛化调用的三种方式 3.如何使用 4.源码分析 推荐阅读: Apach ...

  2. Dubbo笔记 ⑱ :泛化调用 泛化实现

    文章目录 一.前言 二.泛化调用与泛化实现 1. 泛化调用 2. 泛化实现 三.源码实现 1. GenericImplFilter 2. GenericFilter 四.总结 一.前言 本系列为个人D ...

  3. Dubbo接口的泛化调用

    一.什么是dubbo Dubbo是一款高性能.轻量级的开源Java RPC(Remote Procedure Call)框架.在日常开发中大量的应用场景,主要用于不同服务之间的调用. 二.什么是RPC ...

  4. java高性能rpc,企业级rpc,zk调度,负载均衡,泛化调用一体的rpc服务框架

    先放出链接,喜欢的给个star:https://gitee.com/a1234567891/koalas-rpc 一:项目介绍 koalas-RPC 个人作品,提供大家交流学习,有意见请私信,欢迎拍砖 ...

  5. dubbo泛化调用原理

    泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过GenericService调用所有服 ...

  6. 代码技巧——dubbo泛化调用

    现在有一种业务场景: (1)业务方B调用任务系统A,提交一个任务,由A保证任务尽可能的被执行成功(系统A自带幂等.重试),在A完成任务的执行后将执行情况同步回调通知B应用: (2)因此,B应用在提交任 ...

  7. dubbo的调用原理及泛化调用

    简单介绍 dubbo是阿里开源出来的一个rpc框架,主要是用于微服务分布式项目的远程调用,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,下面是调用的原理图: ...

  8. 【java】dubbo基础学习

    http://dubbo.apache.org/en-us/docs/user/quick-start.html dubbo是一个服务治理框架,也是RPC框架. 不得不说dubbo使用真的是简单,这也 ...

  9. Dubbox 基本特性之泛化调用

    Dubbo 是支持泛化调用的,什么是泛化调用呢,泛化调用的好处是什么呢,泛化调用说白一点就是服务消费者并没有服务的接口,学了前面几章的内容之后,你肯定会发现,在我们开发写Demo的时候,必做的一件事情 ...

最新文章

  1. 关于ArrayList的几大问题,看完还不懂来打我!
  2. 基于ggplot2的解剖图和组织模块可视化
  3. 青龙羊毛——广汽三菱(搬运)
  4. 如何建立自信心,不错!
  5. VTK修炼之道66:体绘制裁剪_Cripping技术
  6. (推荐)为什么要走嵌入式?
  7. 数据库事务和并发控制
  8. 《操作系统》OS学习(五):连续内存分配 内存碎片、动态分配、碎片整理、伙伴系统
  9. LeetCode 1614. 括号的最大嵌套深度
  10. MySQL的position值是什么_MySQL数据库中系统函数POSITION功能简介
  11. [2019.04.16] 由Python写成的自动解压脚本
  12. MATLAB实现多元正态Copula分布
  13. php 京东 联盟 链接,京东联盟推广链接在微信上如何直接跳转接入到京东小程序下单购买?...
  14. Java多线程系列--“JUC集合”04之 ConcurrentHashMap
  15. php cnzz api demo,PHP curl抓取cnzz统计数据
  16. 赵鑫:简单技术指标的高明运用
  17. WordPress如何在后台显示自带友情链接?
  18. oracle加密传输的种子,oracle net manager 数据传输安全步骤详解
  19. docker部署springboot工程
  20. uni-app跳转浏览器

热门文章

  1. python 3.5.2设计页面_怎么解决win10系统搭建Python 3.5.2开发环境的处理方案
  2. linux 在线帮助,linux获取在线帮助
  3. 【渝粤教育】国家开放大学2018年春季 0599-22T工程造价管理基础理论与相关法规 参考试题
  4. 【渝粤教育】国家开放大学2019年春季 1362应用语言学 参考试题
  5. 【渝粤教育】国家开放大学2018年春季 8638-22T薪酬制度与薪酬管理 参考试题
  6. [渝粤教育] 西南科技大学 电子设计EDA 在线考试复习资料
  7. 一分钟了解:zigbee的三种关键角色(视频讲解)
  8. java 包装类方法总结_【源码】java包装类总结
  9. python dict初始化大小_在Python中初始化/创建/填充Dict的Dict
  10. imx6的Linux默认颜色,MY-IMX6 Linux-3.14 测试手册(1)