JAVA回调函数简单讲解 CallBack

简介: JAVA回调函数简单讲解 CallBack

回调,其实就是有个回应的那种感觉。


那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。

直接看代码,


先创建一个回调接口,


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来看看整个跑起来是怎么回事,


image.png


运行结果:


可以看到控制台得输出是


image.png


整个流程下来,应用调用消息客户端,想要推送一条消息;


消息客户端拿到客户信息和需要推送的消息后,调用消息服务端推送消息的方法进行推送操作;


消息服务端进行完推送操作后,调用客户端的回调函数,告知推送成功或是失败。


 如果要验证下消息推送失败的回调,也简单,把代码


// int a=2/0;


加到消息服务端推送处,模拟推送过程出现异常即可。


好了,简单的回调函数的应用场景介绍就这样吧, 可以熟悉后自己扩展。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
java.lang.NoClassDefFoundError: com/sun/jna/Callback
java.lang.NoClassDefFoundError: com/sun/jna/Callback
|
6月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Callback(回调模式)
【设计模式】JAVA Design Patterns——Callback(回调模式)
|
Java
什么是java回调函数
什么是java回调函数
159 1
什么是java回调函数
|
6月前
|
JavaScript 前端开发 Java
Java Script中的回调函数,可以用来做什么
Java Script中的回调函数,可以用来做什么
34 0
|
6月前
|
Java 程序员
java回调函数
java回调函数
58 0
java_回调函数Callback
分为了三种回调函数,从简单到难,也挺好理解
125 0
|
JavaScript 前端开发 Java
回调函数 PHP 与 Java
回调函数 PHP 与 Java
109 0
|
Java
java中callback
1。首先回调方法的概念与“构造方法”的概念是不一样的,它不是指java中某个具有特殊意义或用途的方法。
148 0
|
Java Android开发
java之简单的Callback使用总结
java之简单的Callback使用总结
416 0
下一篇
无影云桌面