本日给大家分享万能通用的异步实战,涉及多线程MQ和数据库的整合。这个demo我也会放到我的java高并发实战课程里面。
首先看这样的一个接口,在这边调用了service里面的方法。现在想让这个方法根据一定的策略进行异步处理,比如就可以在它上面加一个表明,这边便是有一个异步实行的表明,这个里面有一个异步实行策略,还有延迟处理韶光,包括业务的描述。
紧张看一下异步实行策略,便是列举类,比如可以先保存数据库,再异步处理。比如还可以先同步处理失落败,再保存数据库。还可以先异步处理,如果处理失落败,再保存数据库。比如还可以仅异步处理,仅异步线程处理。

这个里面的每一个列举值都是一种方案,这个肯定便是对应着service,就类似于策略模式。就在这边找到了很多的service,比如就以先异步处理处理失落败,再保存数据库为例。
这样的方法实行也很大略,便是先把放到MQ里面,如果实行成功就直接返回,如果实行失落败就把任务放到数据库。保存到数据库之后,数据库就有失落败的任务了,这个时候就可以开启定时任务,定时调度去进行重试。
当然这边还有一个异步补偿的定时任务,紧张的逻辑在sql里面,便是判断一个小时之前有没有未实行的任务,如果有就对它进行补偿的实行。
这边还整合了MQ,比如这边整合了RabbitMQ,通过这样的方法进行发送,在这边通过这个方法进行监听。通过这样的绑定关系,在项目启动的时候就可以自动的创建queue以及exchange,并且把行列步队跟交流机进行绑定。
来测试一下接口,这个里面有一个execute的方法,想让它根据配置的这样的策略进行实行。比如是先保存数据库,再异步处理,然后在这边访问一下,可以看到这个OK是急速就返回了,在这边就有对应的日志输出。比如首先是异步保存数据库,然后发送,终极rabbitmq消费实在便是实行这样的方法,终极实行成功。
这个项目我也会放到我的Java高并发实战课程里面,如果你有兴趣,左下角可以理解一下。