Dubbo框架的一些很好用的点,80%程序员还不知道( 二 )


<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" generic="true"/>调用源码:
/** * @author afei * @version 1.0.0 * @since 2017年11月22日 */public class Main {public static void main(String[] args) {// 引?远程服务, 该实例??封装了所有与注册中?及服务提供?连接 , 请缓存ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>();// 弱类型接?名reference.setInterface("com.alibaba.dubbo.demo.DemoService");reference.setVersion("1.0.0");// 声明为泛化接?reference.setGeneric(true);// ?com.alibaba.dubbo.rpc.service.GenericService可以替代所有接口引用?GenericService genericService = reference.get();// 基本类型以及Date,List,Map等不需要转换 , 直接调?Object result = genericService.$invoke("sayYes", new String[] {"JAVA.lang.String"}, new Object[] {"afei"});System.out.println("result --> "+result);// ?Map表示POJO参数 , 如果返回值为POJO也将自动转成MapMap<String, Object> teacher = new HashMap<String, Object>();teacher.put("id", "1");teacher.put("name", "admin");teacher.put("age", "18");teacher.put("level", "3");teacher.put("remark", "测试");// 如果返回POJO将自动转成Mapresult = genericService.$invoke("justTest", new String[]{"com.alibaba.dubbo.demo.bean.HighTeacher"}, new Object[]{teacher});System.out.println("result --> "+result);}}访问日志如果想记录每次请求信息 , 可开启访问日志 , 类似于Ngnix的访问日志 。注意:此日志量比较大 , 请注意磁盘容量 。使用方式(如果配置局部 , 全局访问日志就会失效):
配置全局:
<dubbo:provider accesslog="/App/dubbo-demo.log"/>配置局部:
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" accesslog="/app/demo.log"/><dubbo:service interface="com.alibaba.dubbo.demo.TestService" ref="testService" accesslog="/app/test.log"/>日志格式样式:
[2017-11-22 10:23:20] 172.18.1.205:56144 -> 172.18.1.205:20886 - com.alibaba.dubbo.demo.DemoService:1.0.0 sayHello(java.lang.String) ["afei"]延迟暴露如果服务需要预热时间 , 比如初始化本地缓存 , 等待相关资源就位等 , 可以使用delay进行延迟暴露 。使Dubbo在Spring容器初始化完后延迟多少毫秒再暴露服务 。使用方式:
<dubbo:provider delay="5000"/>或者:
<dubbo:service delay="5000" interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" version="1.0.0"/>转载自:https://mp.weixin.qq.com/s/peBTzuAX5d1UtXc0sYkTtg



推荐阅读