回调,其实就是有个回应的那种感觉。
那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。
直接看代码,
先创建一个回调接口,
MessageCallBack
/**
* @Author : JCccc
* @CreateTime : 2019-2-12
* @Description :回调函数需要执行的内容
* @Point: Keep a good mood
**/
public interface MessageCallBack {
//成功
public void onSccuess(String message, String account);
//失败
public void onFailure(String message, String account);
//重连等等
}
接下来,是模拟消息发送的客户端,
MessageClient
/**
* @Author : JCccc
* @CreateTime : 2019-2-12
* @Description :
* @Point: Keep a good mood
**/
public class MessageClient implements MessageCallBack {
private String message;
private String account;
//重写回调接口的方法
@Override
public void onSccuess(String message, String account) {
System.out.println("进入回调函数--"+"消息推送成功,"+"客户是:"+account+" 推送的消息是:"+message);
}
@Override
public void onFailure(String message, String account) {
System.out.println("进入回调函数--"+"消息推送失败,"+"客户是:"+account+" 推送的消息是:"+message);
}
public void sendMessage(){
System.out.println("开始调用服务端进行消息的推送");
new MessageServer().send(message,account,this);
// new MessageServer().send(message,"Mike",new MessageClient(message,account));
}
public MessageClient(String message, String account) {
this.message = message;
this.account = account;
}
}
接下来,是模拟消息服务器:
MessageServer:
/**
* @Author : JCccc
* @CreateTime : 2019-2-12
* @Description :
* @Point: Keep a good mood
**/
public class MessageServer {
public void send(String message, String account, MessageClient messageClient){
try {
System.out.println(message+" "+account+"消息推送完毕");
messageClient.onSccuess(message,account);
} catch (Exception e) {
e.printStackTrace();
messageClient.onFailure(message,account);
}
}
}
最后,写个简单的对外接口,提供消息推送,
MessageController
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author : JCccc
* @CreateTime : 2019-2-12
* @Description :
* @Point: Keep a good mood
**/
@RestController
public class MessageController {
@GetMapping("/sendMessage/test")
public void sendMesssage(@RequestParam String account){
String message="这是一条测试消息";
MessageClient messageClient=new MessageClient(message,account);
messageClient.sendMessage();
}
}
现在,代码码完了,我们打开postman来看看整个跑起来是怎么回事,
运行结果:
可以看到控制台得输出是
整个流程下来,应用调用消息客户端,想要推送一条消息;
消息客户端拿到客户信息和需要推送的消息后,调用消息服务端推送消息的方法进行推送操作;
消息服务端进行完推送操作后,调用客户端的回调函数,告知推送成功或是失败。
如果要验证下消息推送失败的回调,也简单,把代码
// int a=2/0;
加到消息服务端推送处,模拟推送过程出现异常即可。
好了,简单的回调函数的应用场景介绍就这样吧, 可以熟悉后自己扩展。