利用rabbitmq异步实现来提升程序处理性能

近期交易系统出款交易量猛增,从skywalking监控平台查看服务的调用链路(Trace),发现在调用外部三方http接口会耗时将近一半。鉴于出款交易在业务上是异步处理的,所以,商定考虑将调用外部接口的部分改为异步实现。

异步实现,一种方案是线程池。弊端是,线程池是在应用节点内部,集群部署环境下,并不利于多节点的均衡处理。再者,单节点故障时,消息就会丢失,这个比较要命,还要考虑补偿。

最好的方案是借助消息中间件,我们使用rabbitmq。

zhenghe-channel应用是springboot项目,异步改为使用rabbitmq来处理,zhenghe-channel既是生产者,又是消费者。

我们的springboot项目使用rabbitmq,通常是这样子的。一个是标记了@Configuration注解的RabbitConfig类,通过@Bean注解声明broker(exchange、queue,以及binding)。

生产者端,不外乎调用RabbitTemplate#convertAndSend方法。

消费端,则是使用Listener监听队列消息,进行消费。

zhenghe-channel项目工程庞大,package包和类文件很多,将broker的声明和使用分放在不同的类里,不易读。 这次呢,为了代码易读和易维护,我将声明broker的Bean和生产者代码、消费者代码写在一个类里。必须棒棒哒~(。≧3≦)ノ⌒☆

Original: https://www.cnblogs.com/buguge/p/16726347.html
Author: buguge
Title: 利用rabbitmq异步实现来提升程序处理性能

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685608/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球