RabbitMQ之消息模式简单易懂,超详细分享~~~

本文详细介绍了RabbitMQ的各种消息模式,包括Simple、Work、Fanout、Direct、Topic和Headers模式。通过Web管理界面和代码演示,展示了如何设置和使用这些模式,帮助读者深入理解RabbitMQ的运作机制。文章还强调了消息确认模式在工作模式中的重要性,并提供了代码示例。最后,作者鼓励读者根据业务场景选择合适的消息模式。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

前言

上一篇对RabbitMQ的流程和相关的理论进行初步的概述,如果小伙伴之前对消息队列不是很了解,那么在看理论时会有些困惑,这里以消息模式为切入点,结合理论细节和代码实践的方式一起来学习。

正文

常用的模式有Simple、Work、Fanout、Direct、Topic、Headers,可以通过设置交换机类型和配置参数来实现各个模式;接下来就分别进行实操演示吧。

以下演示都是通过管理员的账号进行。其实每种模式其实很大一部分操作都是一样的,所以公共部分不会重复截图说明,不过会针对不同的配置进行说明。

1. 简单模式(Simple)

简单模式顾名思义就是简单,不用配置太多的东西,如下图所示:

上图解析:

  • P:表示生产者,负责推送消息;
  • C:表示消费者,负责接收消息;
  • 中间红色部分:代表的是队列(Queue);

小伙伴可能会奇怪,这里没有交换机吗?

其实是有的,上一篇说流程的时候,消息肯定是要通过交换机转发到队列中的,这里没有指定,那是因为用到了默认的交换机,具体看以下演示。

1.1 Web管理界面进行演示

对于Web界面演示来说,只需要将消息能生产、投递、消费即可,我们不用去弄一个生产者和消费者,生产者和消费者都是业务处理逻辑用的,所以通常都是根据业务需求就行实现的;话不多说开始演示吧。

根据上图所示,我们只需要创建一个队列即可,然后就可以进行消息模拟发送和消费了。

此时并没有指定交换机绑定,点击队列名看详情中的Bindings,有一个默认的交换机已经和队列进行绑定

队列详情页面的说明,在上篇文章中就已经标注了,这里就不再赘述。

有了绑定关系之后,就可以在默认的交换机页面开始模拟转发消息;首先进入Exchanges管理页面,点击**默认交换机(AMQP default)**进入详情开始发布消息:

消息发送成功之后就会在队列界面看到消息情况:

队列里面有了消息之后,就可以模拟消费者进行消息消费,点击队列名进入详情,可在详情也模拟消费:

如上所示,简单模式整个消费流程就通过Web页面模拟完了。但在消费消息时,提供了Ack Mode模式(消息确认模式)选择来进行消费,可选择的模式如下:

  • Nack message requeue true:获取消息,但是不会向Server做ack应答确认(即不告诉服务器消息被消费了),消息重新入队。即队列中的消息不会被删除掉;
  • Automatic Ack:获取消息,向Server做应答确认(即会告诉服务器消息被消费了),消息不重新入队,将会从队列中删除;
  • Reject requeue true:拒绝获取消息(即拒绝处理消息),消息重新入队;
  • Reject requeue false:拒绝获取消息(即拒绝处理消息),消息不重新入队,将会被删除;

到这关于简单模式下的界面演示就结束了,其中描述的细节内容是共用的,在其他模式下的操作也类似,后续不做重复说明。

1.2 代码进行演示

这里就用控制台的方式,一步一步的实现。这里需要引入Nuget包:RabbitMQ.Client。生产者的整体代码如下:

接下来就一步一步来调试,看看消息是怎么一步一步发出去的;

  • 创建连接

刚开始没有任何连接,如下:

代码继续下一步,连接就有了:

此时就可以理解为网络连接上了,但通道还没有创建出来,如下:

  • 根据连接创建通道

通道根据连接进行创建,目的是为了提高传输效率,共用一个连接,不然频繁的创建和销毁连接会占资源,影响性能

  • 定义队列

有连接和通道之后理论就可以直接发消息了,但直接通信会相互依赖比较强,达不到解耦合的效果。所以需要定义一个队列将消息存放到里面,客户端想用了自己来消费就行,另外队列还可以达到一定的削峰作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[虚幻私塾】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值