回调,其实就是有个回应的那种感觉。
那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。
直接看代码,
先创建一个回调接口,
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;
加到消息服务端推送处,模拟推送过程出现异常即可。
好了,简单的回调函数的应用场景介绍就这样吧, 可以熟悉后自己扩展。