Java中,回调方法是干什么滴?

定义

在完成某一动作之后触发的方法,这个动作通常是一个接口的调用

应用场景

1、场景一

RocketMq中的异步发送消息应用到了回调方法,消息发出之后,不用等待消息发送后的响应结果而阻塞当前线程,而是通过一个回调接口来通知发送端发送的消息是否成功。

sendProducer.send(message, selectOneMessageQueue, new SendCallback() {
    @Override
    public void onSuccess(SendResult sendResult) {
        sendCallback.onSuccess(sendResult);
    }

    @Override
    public void onException(Throwable e) {
        asyncResend(message,selectOneMessageQueue,sendCallback,retryTimes,e);
    }
}, asyncTimeOut);

发送消息成功后,将sendResult传入回调方法中返回。

try {
    SendResult sendResult =
            MQClientAPIImpl.this.processSendResponse(brokerName, msg, response);
    assert sendResult != null;
    sendCallback.onSuccess(sendResult);
}
catch (Exception e) {
    sendCallback.onException(e);
}

2、场景二

OAuth2.0中,授权成功之后要调用回调接口返回相应的授权码,后续拿到这个授权码才能进行之后的操作。

回调接口的入参可以设置为HttpServletRequest,当授权方授权成功后调用回调接口会将授权码等信息存放到HttpServletRequest中。

回调接口设置方将授权码等有用信息从HttpServletRequest中取出以进行后续操作。

回调接口代码示例

@RequestMapping(value = "/authorization/inform", method = RequestMethod.POST)
@ResponseBody
public RspVO getAuthorizationCode(HttpServletRequest request) {
    RspVO rspVo = new RspVO();
    rspVo.setData("OK");
    String code = request.getParameter("code");
    // 此处可添加dubbo接口,将code保存下来或传入后续操作中
    return rspVo;
}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值