dubbo 2.7.3 自定义filter 与 远程调用
dubbo 2.7.3 自定义filter 与 远程调用
前言
编写这篇文章主要目的是为了记住在使用dubbo过程中的一些注意事项,本文描述的问题都是基于dubbo2.7.3+springboot+zookeeper中遇到的,对于dubbo 2.7.x同样适用。
使用@Reference注解调用服务
@Reference注解在调用服务过程中,对于Consumer中接口目录路径必须与Provider中接口目录路径一直,否者很容易就出现:no provider use in 。。。之类的错误,什么意思呢?简单来说就是 在服务端假设接口在com.cn.aa目录下,则在消费端的接口定义必须也是在com.cn.aa下。
dubbo 自定义filter
1.必须实现org.apache.dubbo.rpc.filter 接口。如下图。
@Activate 注解的啥意思是什么时候去**这个filter ,具体的意思,请自行百度,这个注解在springboot无xml化整合dubbo项目中是必须的。
2.如果需要在dubbo自定的filter中注入其他的工具例如redis的工具类等,需要使用setter方式注入,不能使用spring的自动装配。否则注入的值将为空值。如:
3.在实现invoke方法时,如何在不满足的情况跳出过滤器,不让其执行业务服务中的方法。
AsyncRpcResult的newDefaultAsyncResult方法,第一个参数时你需要返回给消费者的值,告诉消费者为什么不让你执行,。
AsyncRpcResult类继承AbstractResult,而AbstractResult则实现了Result接口,所以在图中能直接返回Result接口对象。