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

发布时间:2023年12月21日

定义

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

应用场景

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;
}
文章来源:https://blog.csdn.net/weixin_52457624/article/details/135136739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。