当前位置:   article > 正文

(一)「消息队列」之 RabbitMQ 入门

(一)「消息队列」之 RabbitMQ 入门

0、引言

想要实现两个应用程序之间的通信,我们可以借助“消息队列”技术。本文将介绍使用 C# 语言在 .NET 下实现 RabbitMQ 消息队列;当然无论是哪种编程语言,要使用消息队列,都需要完成以下两个基本步骤:

  1. 下载并安装相应的消息队列服务器软件,并根据需要进行配置;
  2. 在您的应用程序代码中引入相应的消息队列客户端库,并使用客户端库提供的API来建立与消息队列服务器的连接并进行通信。

这些步骤对于大多数消息队列中间件都是适用的。不同的消息队列中间件可能有不同的安装和配置方法,以及不同的客户端库和API,您可以根据自身需要阅读相应的官方文档即可。

本文主要参考:

  1. RabbitMQ Tutorials
  2. RabbitMQ使用教程(超详细)
  3. C# 消息队列之 RabbitMQ 基础入门
  4. 消息队列常见的几种使用场景介绍!- 知乎
  5. 分布式之消息队列的特点、选型、及应用场景详解
  6. 消息队列漫谈:什么是消息模型?- 知乎

1、基础概念

消息队列
消息队列Message Queue)是一种通信模式,用于在应用程序之间传递消息。它提供了一种异步的、可靠的通信方式,允许发送者(发送消息的应用程序)和接收者(接收消息的应用程序)能够独立地进行工作,而不需要彼此直接交互。

在消息队列中,消息是以队列的形式存储和传递的。发送者将消息放入队列的末尾,而接收者从队列的开头获取消息。这种队列的特性确保了消息的有序处理,并且允许多个发送者和接收者之间进行解耦,从而提高了系统的可伸缩性和可靠性。
在这里插入图片描述
消息队列的使用可以带来许多好处。首先,它允许异步处理,即发送者可以在发送消息后继续执行其他任务,而不需要等待接收者的响应。这种方式可以提高应用程序的性能和吞吐量,特别是在处理大量消息或处理延迟较高的操作时。

其次,消息队列可以解耦发送者和接收者之间的依赖关系。发送者只需将消息发送到队列中,而不需要知道具体的接收者是谁或接收者何时处理消息。这种松耦合的设计允许系统中的不同模块独立开发、部署和扩展,提高了系统的灵活性和可维护性。

此外,消息队列还提供了消息持久化的能力,确保即使在发送者和接收者之间发生故障或中断时,消息不会丢失。消息可以持久化到磁盘上,并在系统恢复后重新发送。这种可靠性保证了消息的传递不会因为故障而中断,使系统更加健壮和可靠。
常见的消息队列软件
中间件
中间件是指位于操作系统和应用程序之间的软件层。它充当了不同软件组件之间的桥梁,提供了通信和协调的功能,以便它们能够相互交互和协作。

中间件的主要目标是简化分布式系统的开发和管理。它提供了一组通用的功能和服务,使得不同的应用程序和系统可以进行互操作,并能够以可靠、安全和高效的方式进行通信。

中间件可以实现各种功能,包括但不限于以下几个方面:

  1. 消息传递:中间件提供消息传递机制,用于在分布式系统中传递和交换数据。消息队列就是一种常见的消息传递中间件。
  2. 远程过程调用(RPC):中间件可以实现远程过程调用,使得应用程序能够在不同的计算机或进程之间调用和执行函数或方法。
  3. 数据库连接和访问:中间件可以提供数据库连接和访问的功能,使得应用程序能够方便地操作和管理数据库。
  4. 分布式事务处理:中间件可以支持分布式系统中的事务处理,确保多个操作在不同的计算机或进程之间具有原子性、一致性、隔离性和持久性。
  5. 缓存管理:中间件可以提供缓存管理的功能,加速数据访问和提高系统性能。
  6. 安全认证和授权:中间件可以实现安全认证和授权机制,保护系统免受未经授权的访问和攻击。
Erlang
Erlang 是一种通用的编程语言,最初由爱立信(Ericsson)的开发团队在1980年代末创建。它是一种函数式编程语言,专门设计用于构建可扩展、并发和分布式的软实时系统。 RabbitMQ 服务是使用 Erlang 语言编写的
AMQP ( Advanced Message Queuing Protocol)
AMQP高级消息队列协议:一种面向消息的网络协议(应用层协议),用于在应用程序之间传递消息。 RabbitMQ 是对 AMQP 0.9.1 协议的 实现。并在后续拓展了对 更多协议的支持
RabbitMQ 介绍
RabbitMQ 是一个消息代理:它接受并转发消息。 你可以把它想象成一个邮局:当你把你想要邮寄的邮件放在邮箱里时, 您可以确定,邮递员最终会将邮件递送给您的收件人。 在这个类比中,RabbitMQ是一个邮政信箱,一个邮局和一个信件载体。
RabbitMQ 和邮局的主要区别在于它不处理纸张。相反,它接受、存储和转发二进制 blob 数据 —— 消息Message)。
RabbitMQ,以及一般的消息传递,会使用一些术语:
  • 生产 Producing 仅仅只是意味着发送。发送消息的程序被称为 生产者 Producer
  • 在 RabbitMQ 中,邮箱的名字就称为 队列 queue。尽管消息流经 RabbitMQ 和您的应用程序,但它们只能存储在 队列 queue 中。队列 queue 仅受主机内存和磁盘限制的约束,它本质上是一个大型消息缓冲区。许多 生产者 Producer 可以往一个队列发送消息,许多 消费者 Consumer 也可以尝试从一个 队列 queue 接收数据。这就是我们表示队列的方式:
  • 消费 Consuming 与接收意思相近。主要等待接收消息的程序被称为 消费者 Consumer
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/639641
推荐阅读
相关标签