一、课程介绍
人生苦短,我用.NET Core!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景。本次分享课程不是零基础教学,课程内容的侧重点是讲解的RabbitMQ的最实用、最简单的实战运用场景:Publish/Subscrib(发布/订阅)模式,发送端发送消息,单个接收端接收处理消息。 学完本次"是猴子都看的懂的消息队列RabbitMQ实战课程"后,阿笨带直接让你也能如此优雅简单的上手使用RabbitMQ消息队列,开箱即用,即插即用! 1.1、本次分享课程适合人群如下: 如果您是一个开发老鸟,那么本次课程完全不建议您进行学习! 如果您对RabbtiMQ基础知识有一定的了解或者甚至完全没有了解MQ过,那么或许本次分享课程阿笨站着实战项目开发的角度带领大家在能够让你最直观的体验一下MQ是什么,能够我们的项目中做什么,帮助我们解决什么样的问题。 1.2、一句话总结今天我们学习达到的目标 如何在我们的ASP.NET Core项目中使用消息队列MQ来实现不同系统之间数据同步,从而实现系统应用程序之间解耦。 如果您同样对本次分享《ASP.NET Core消息队列RabbitMQ基础入门实战演练》课程感兴趣的话,那么请跟着阿笨一起学习吧。废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。
二、快速利用Docker构建RabbitMQ容器环境搭建
Docker最近很火,所以就打算使用。大家根据自身情况,如果是刚开始学习的RabbitMQ话,这里还是建议大家先安装在Windows系统或者是Linux系统上。 docker run -d --name aben-rabbitmq -p 15672:15672 -p 5671:5671 -p 5672:5672 rabbitmq:management 此时,我们可以访问如下地址来访问自带的Web管理页面: http://192.168.137.237:15672/ 默认账号/密码:guest/guest
三、消息队列RabbitMQ在ASP.NET Core中实战场景运用
MQ的最常用,最具备典型代表意义的使用场景:实现不同系统之间的数据同步比如:如何实现订单系统OMS将订单同步至发货系统ERP中?
1、基于关系型数据库实现的数据同步方案。
1)、获取待同步的订单列表数据:IEumable<Order> GetWaittingSyncOrderList(int count=100); 2)、更新已同步的订单:boo UpdateOderSyncStatus(int [] orderIds)
2、基于MQ实现的数据同步异步处理方案。
1)、生产者只负责将待同步的订单放入到消息队列中即可。 2)、消费者只负责将消息队列中的带同步订单取出即可。
3、消息接收确认ACK机制防止消息丢失
我们知道默认情况下如果一个Message 被消费者所正确接收则会被从 Queue 中移除 那么如何防止消费者出现异常的时候导致消息的丢失即实现消息消费者如何通知Rabbit消息消费成功。 消息通过acknowledged(ACK )确认是否被正确接收,每个 Message 都要被确认(acknowledged),可以手动去 ACK 或自动 ACK
4、如何通过多线程技术来提高MQ订阅者的处理能力 Publish/Subscrib(e发布/订阅)模式,发送端发送广播消息,单个接收端接收处理消息,这样消费者的处理能力有限,如何在不使用多个接收端的情况下,就能提供我们单个消费者的处理能力呢? 答案是肯定的:采用多线程即可。