首页 > 其他 > 详细

Dubbo探索(五)

时间:2017-06-30 00:30:40      阅读:426      评论:0      收藏:0      [点我收藏+]

事件通知

在调用之前,调用之后,出现异常时,会触发oninvoke, onreturn, onthrow三个事件,可以配置当事件发生时,通知哪个类的哪个方法。

消费方实现Notify接口,如下:

 1 /**
 2  * Version: 3.0
 3  * Author: pattywgm
 4  * Time: 17/6/29 下午11:01
 5  * Desc: 事件通知接口
 6  */
 7 public interface Notify {
 8     /**
 9      *
10      * @param res 返回值
11      * @param args 入参
12      */
13     public void onreturn(Object res, Object... args);
14 
15     /**
16      *
17      * @param ex 异常对象
18      * @param args 入参
19      */
20     public void onthrow(Throwable ex, Object... args);
21 
22     /**
23      *
24      * @param args 入参
25      */
26     public void oninvoke(Object... args);
27 }
28 
29 
30 @Service("notifyImpl")
31 public class NotifyImpl implements Notify {
32     @Override
33     public void onreturn(Object res, Object... args) {
34         System.out.println("onreturn:" + res.toString());
35 
36     }
37 
38     @Override
39     public void onthrow(Throwable ex, Object... args) {
40 
41         System.out.println("onthrow: " + ex.getMessage());
42     }
43 
44     @Override
45     public void oninvoke(Object... args) {
46         System.out.println("oninvoke: " + args[0]);
47     }

配置UserService的findUserById()方法,添加事件通知,如下:

1 <dubbo:reference id="userService" group="db" interface="com.patty.dubbo.api.service.UserService"
2                      timeout="10000" retries="3" mock="true" check="false">
3         <dubbo:method name="findAllUsers" merger="myMerger" cache="lru">
4         </dubbo:method>
5         <dubbo:method name="findUserById" async="false" onreturn="notifyImpl.onreturn" onthrow="notifyImpl.onthrow">
6         </dubbo:method>
7 </dubbo:reference>

onreturn指定调用notifyImpl的onreturn方法, onthrow指定调用notifyImpl的onthrow方法。运行中打印结果信息为:

onreturn: UserVo info: name-> 李丽, age -> 23, phoneNo -> 17709801256
onthrow: null pointer happend (在UserService的实现中,模拟抛出一个空指针异常)

 

代码参考:https://github.com/pattywgm/dubbo-demo.git

Dubbo探索(五)

原文:http://www.cnblogs.com/java-wgm/p/7096947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!