ASP.NET Core消息队列RabbitMQ基础入门实战演练

Posted 51net

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core消息队列RabbitMQ基础入门实战演练相关的知识,希望对你有一定的参考价值。

一、课程介绍

人生苦短,我用.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发布/订阅)模式,发送端发送广播消息,单个接收端接收处理消息,这样消费者的处理能力有限,如何在不使用多个接收端的情况下,就能提供我们单个消费者的处理能力呢?

答案是肯定的:采用多线程即可。

四、总结

我们学习一门技术,最好先弄明白该技术解决的业务场景是什么,然后带着需求问题去学习和实践。如果大家对消息队列RabbitMQ进一步学习和了解,可以学习一下阿笨早期的分享课程:《C#消息队列RabbitMQ从入门到实战演练》、《C#多线程技术提高消息队列MQ消费者吞吐率》、《C# RabbitMQ延迟队列功能实战项目演练》、《C# RabbitMQ优先级队列实战项目演练》、《C#基于RabbitMQ实现客户端之间消息通讯实战演练》

技术图片
Docker构建RabbitMQ
 
 
技术图片
ASP.NET Core使用RabbitMQ
 

以上是关于ASP.NET Core消息队列RabbitMQ基础入门实战演练的主要内容,如果未能解决你的问题,请参考以下文章

2021-06-30 .NET高级班 80-ASP.NET Core RabbitMQ的交换机的四种类型

Python 发布到 ASP.NET Core 服务使用的 RabbitMQ 交换/队列

使用Redis Stream来做消息队列和在Asp.Net Core中的实现

在 ASP.Net Core 3 中使用 Rabbitmq 的 RPC

2021-06-30 .NET高级班 79-ASP.NET Core RabbitMQ优先级队列的使用

2021-06-30 .NET高级班 78-ASP.NET Core RabbitMQ的基本使用