1 项目中使用场景
在微服务项目中,一些业务比较复杂,处理时间比较长,但还得需要及时的响应结果给另一方,这就得需要采用异步的方式来处理这种复杂的业务逻辑,先把主要的业务流程走完,另外一些业务借助多线程技术或者使用MQ进行异步处理,比如说我在项目中做过支付这一块,需要支付的同时还需要记录日志,调用别人的积分服务,这就比较耗时,然而第三方支付端(银联,支付宝,微信)需要得到商户端及时的响应,不然的话第三方会一直重试的。因此我在处理这些问题时,才用了RabbitMQ来进行异步处理,提高业务的处理速度。
2 串行方式:
以串行的方式响应给第三发端很可能会超时,会引起第三方端进行重试。
3 消息队列异步处理
引入消息队列后,把处理日志业务逻辑和处理积分的业务逻辑进行异步处理 。由此可以看出,引入消息队列后,响应第三方支付端时间就等于主业务逻辑的时间+写入消息队列的时间(可以忽略不计),引入消息队列后处理后,响应时间比串行的快得多。
生产者代码:
消费者代码:
当然MQ不仅仅用在异步处理提高代码执行效率上,还在应用解耦,流量削峰等等方面。文章有不足之处请多多指正。
网友评论