在完成某一动作之后触发的方法,这个动作通常是一个接口的调用
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;
}