网站首页 > 精选教程 正文
通用异步实战。
今天给大家分享万能通用的异步实战,涉及多线程MQ和数据库的整合。这个demo我也会放到我的java高并发实战课程里面。
首先看这样的一个接口,在这边调用了service里面的方法。现在想让这个方法根据一定的策略进行异步处理,比如就可以在它上面加一个注解,这边就是有一个异步执行的注解,这个里面有一个异步执行策略,还有延迟处理时间,包括业务的描述。
主要看一下异步执行策略,就是枚举类,比如可以先保存数据库,再异步消息处理。比如还可以先同步处理失败,再保存数据库。还可以先异步消息处理,如果处理失败,再保存数据库。比如还可以仅异步消息处理,仅异步线程处理。
这个里面的每一个枚举值都是一种方案,这个肯定就是对应着service,就类似于策略模式。就在这边找到了很多的service,比如就以先异步消息处理处理失败,再保存数据库为例。
这样的方法执行也很简单,就是先把消息放到MQ里面,如果执行成功就直接返回,如果执行失败就把任务放到数据库。保存到数据库之后,数据库就有失败的任务了,这个时候就可以开启定时任务,定时调度去进行重试。
当然这边还有一个异步补偿的定时任务,主要的逻辑在sql里面,就是判断一个小时之前有没有未执行的任务,如果有就对它进行补偿的执行。
这边还整合了MQ,比如这边整合了RabbitMQ,通过这样的方法进行发送消息,在这边通过这个方法进行监听消息。通过这样的绑定关系,在项目启动的时候就可以自动的创建queue以及exchange,并且把队列跟交换机进行绑定。
来测试一下接口,这个里面有一个execute的方法,想让它根据配置的这样的策略进行执行。比如是先保存数据库,再异步消息处理,然后在这边访问一下,可以看到这个OK是立刻就返回了,在这边就有对应的日志输出。比如首先是异步保存数据库,然后发送消息,最终rabbitmq消费消息其实就是执行这样的方法,最终执行成功。
这个项目我也会放到我的Java高并发实战课程里面,如果你有兴趣,左下角可以了解一下。
猜你喜欢
- 2024-11-19 你知道@Async 是怎么让方法异步执行的吗?
- 2024-11-19 Java 并发编程 11 - 异步执行框架 Executor
- 2024-11-19 Java中异步复用io
- 2024-11-19 JAVA异步方法笔记
- 2024-11-19 面试官:Redis分布式锁超时了,任务还没执行完怎么办?
- 2024-11-19 Java客户端Jedis 对Redis的几种调用方式包括事务、管道、分布式
- 2024-11-19 Dubbo 2.7新特性之异步化改造
- 2024-11-19 新手也能看懂的 SpringBoot 异步编程指南
- 2024-11-19 SpringBoot 异步编程
- 2024-11-19 C# 同步方法怎么调用异步方法
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)