C#消息队列零基础从入门到实战演练

Posted 跟着阿笨一起玩NET

tags:

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

一、课程介绍

如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次《C#消息队列零基础从入门到实战演练》分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用。本次分享课您将学习到以下知识点:

1、微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用。

2、企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用。

3、如何实现RabbitMQ客户端(Client)多线路连接复用。

4、RabbitMQ服务端(Server)高可用集群的搭建。

5、RabbitMQ项目实战演练:在课程实战章节阿笨将带领大家运用RabbitMQ消息队列进行一个应用场景的项目实战分享《基于开源RabbitMQ消息中间件实现客户端系统日志实时监控》。

如果您对本次分享课感兴趣的话,那么请允许阿笨带领大家一起学习吧。

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

C#消息队列零基础从入门到实战演练

消息队列

二、概念名称含义解释

2.1、什么是消息队列(MQ)?

全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。

2.2、什么是消息(Message)?

消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。

2.3、什么是队列(Queue)?

队列指的是应用程序通过队列来通信。

三、MQ原理图以及优缺点

3.1、MSMQ的实现原理

MSMQ的实现原理是消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。

MSMQ原理图

C#消息队列零基础从入门到实战演练



3.2、RabbitMQ的实现原原理

C#消息队列零基础从入门到实战演练


(1)客户端连接到消息队列服务器,打开一个channel。

(2)客户端声明一个exchange,并设置相关属性。

(3)客户端声明一个queue,并设置相关属性。

(4)客户端使用routing key,在exchange和queue之间建立好绑定关系。

(5)客户端投递消息到exchange。

(6)exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

3.3、消息队列(MQ)的优缺点

优点:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行后面的代码,大大提高了处理的能力;在信息传递过程中,具有故障恢复能力;MQ的消息传递机制使得通信的双方具有不同的物理平台成为可能。

缺点:不适合Client需要Server端实时交互情况,大量请求时候,响应可能延迟。

四、消息队列MQ应用场景和消费模式

4.1、消息队列应用场景

一般包含:异步处理,应用解耦,日志处理,流量削锋和消息通讯等这几类常用的场景。

1、异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。

2、应用解耦场景说明:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。

3、流量削锋应用场景说明:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。

4、日志处理应用场景说明:是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。

5、消息通讯应用场景说明:是指实现了两个不同应用程序无需通过互相调用的方式实现两者之间的消息通讯传递。

本次分享课将给大家讲解日志处理这个场景。一个系统有大量的业务需要各种日志来保证后续的分析工作,而且实时性要求不高,用队列处理再好不过了。

4.2、MQ常用的两种消息消费模式

4.2.1、P2P模式也叫生产消费模式

C#消息队列零基础从入门到实战演练


P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。

P2P的特点如下:

1、每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)。

2、发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。

3、接收者在成功接收消息之后需向队列应答成功。

4、如果希望发送的每个消息都会被成功处理的话,那么需要P2P模式。

4.2.2、Pub/Sub模式也叫发布订阅模式

C#消息队列零基础从入门到实战演练


Pub/Sub模式包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。

Pub/Sub的特点如下:

1、每个消息可以有多个消费者。

2、发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。

3、为了消费消息,订阅者必须保持运行的状态。

五、消息队列MQ介绍和安装

5.1、微软MSMQ是什么?

MSMQ全称是Microsoft Message Queue——微软消息队列。它是一种异步传输模式,可以在不同的应用之间实现相互通信,相互通信的应用可以分布在同一台机器上,也可以分布于相连的网络空间中的任一位置。MSMQ通过发送和接受消息使得应用程序之间的通信变的更快和更可靠。

5.2、阿笨手把手教你安装微软MSMQ

详细安装文件请参考:微软MSMQ在Windows系统安装步骤说明.pdf

5.3、RabbitMQ是什么?

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue Protocol)的开源实现。它是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。

5.4、阿笨手把手教你安装企业级RabbitMQ

详细安装文件请参考:RabbitMQ在Windows系统安装步骤说明.pdf

六、RabbitMQ消息队列集群服务器搭建过程演示

C#消息队列零基础从入门到实战演练

cluster集群示意图

七、RabbitMQ应用场景之日志处理实战演示

阿笨本次分享课将带领大家运用RabbitMQ消息队列产品进行项目实战,基于开源RabbitMQ消息中间实现客户端系统日志实时监控处理。实现核心步骤如下:

1、日志采集客户端,负责日志数据采集,定时写受写入RabbitMQ队列。

2、RabbitMQ消息队列,负责日志数据的接收,存储和转发。

3、日志处理应用:订阅并消费RabbitMQ队列中的日志数据。

7.1、RabbitMQ客户端实现客户端多连接复用(采用AMQP组来动态链接)

由于RabbitMQ是AMQP协议的实现,所以在进行远程连接的时候尽量采用amqp协议的方式连接。

var amqpList = new List

{

new AmqpTcpEndpoint(new Uri("amqp://192.168.0.105:5672")),

new AmqpTcpEndpoint(new Uri("amqp://192.168.0.107:5672"))

};

八、MQ消息队列在线学习和演示

C#消息队列零基础从入门到实战演练




以上是关于C#消息队列零基础从入门到实战演练的主要内容,如果未能解决你的问题,请参考以下文章

Unity零基础到入门 ☀️| 小万字教程 对 Unity 中的 协程 ❤️全面解析+实战演练❤️

Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练收藏不迷路

Kafka从入门到实战

Kafka从入门到实战

小D课堂 - 零基础入门SpringBoot2.X到实战_汇总

MySQL零基础从入门到精通,看完这篇直接毕业!(图文并茂,实战教学)