网站首页 > 精选教程 正文
通用异步实战。
今天给大家分享万能通用的异步实战,这个Demo我也会放到我的java高并发实战课程里面。
首先看这样的一个接口,在这边调用了service里面的方法。现在想让这个方法根据一定的策略进行异步处理,比如就可以在它上面加一个注解,这个里面有一个异步执行策略,还有延迟处理时间,包括业务的描述。
主要看一下异步执行策略,就是枚举类,比如可以先保存数据库,再异步消息处理。比如还可以先异步处理失败,再保存数据库。还可以先异步消息处理,如果处理失败,再保存数据库。比如还可以仅异步消息处理,仅异步线程处理。
这个里面的每一个枚举值都是一种方案,这个肯定就是对应着service,就类似于策略模式。就在这边找到了很多的service,比如就以先异步消息处理处理失败,再保存数据库为例。
这样的方法执行也很简单,就是先把消息放到MQ里面,如果执行成功就直接返回,如果执行失败就把任务放到数据库。保存到数据库之后,数据库就有失败的任务了,这个时候就可以开启定时任务,定时调度去进行重试。
当然这边还有一个异步补偿的定时任务,主要的逻辑在sql里面,就是判断一个小时之前有没有未执行的任务,如果有就对它进行补偿的执行。
这边还整合了MQ,比如这边整合了Rabbit MQ,通过这样的方法进行发送消息,在这边通过这个方法进行监听消息。通过这样的绑定关系,在项目启动的时候就可以自动的创建queue以及exchange,并且把队列跟交换机进行绑定。
来测试一下接口,这个里面有一个execute的方法,想让它根据配置的这样的策略进行执行。比如是先保存数据库,再异步消息处理。在这边访问一下,可以看到这个ok是立刻就返回了,在这边就有对应的日志输出。比如首先是一步保存数据库,然后发送消息。最终rapidmq消息其实就是执行这样的方法,最终执行成功。
猜你喜欢
- 2025-03-14 一次搞懂 Promise 异步处理(promise实现异步加载图片)
- 2025-03-14 并发编程:CompletableFuture异步编程没有那么难
- 2025-03-14 @Async引发线上服务内存溢出如何处理
- 2025-03-14 Spring异步方法+ThreadLocal获取登录用户信息问题的解决
- 2025-03-14 c# 异步方调用同步方法和同步方法调用异步方法性能上有什么区别?
- 2025-03-14 Java 17中的异步编程:使用CompletableFuture实现异步任务
- 2025-03-14 使用 CompletableFuture 实现异步编程
- 2025-03-14 Java8 异步非阻塞做法:CompletableFuture 两万字详解
- 2025-03-14 JUC并发—13.Future模式和异步编程简介
- 2025-03-14 使用Quarkus开发响应式REST API,异步异步异步
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)