【愚公系列】2022 年 03 月 RabbitMQ 环境搭建和初步使用 (window11+vs2022+.NET 6)
一、RabbitMQ 是啥?
RabbitMQ 是使用 Erlang 编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了 Broker 构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。
它支持开放的高级消息队列协议 (AMQP,Advanced Message Queuing Protocol),从根本上避免了生产厂商的封闭,使用任何语言的各种客户都可以从中受益。这种协议提供了相当复杂的消息传输模式,所以基本上不需要 MassTransit 或 NServiceBus 的配合。它还具有“企业级”的适应性和稳定性。这些东西对我的客户来说十分的有吸引力。
二、使用步骤
1.RabbitMQ 的整体架构
2. 为什么要用 RabbitMQ 消息队列
消息队列是啥:消息队列(Message Queue),一种先进先出的队列结构,用于处理 Message。消息队列解决的问题:在处理大量并发请求时,同步处理往往会发生阻塞,特别是在更新数据库或者调用其他组件时。消息队列能够实现请求的异步处理、应用解耦、流量削锋和消息通讯,同时能够有效防止阻塞导致的消息丢失。消息队列系统,一般都包含 3 个角色:队列服务端,队列的生产者,队列的消费者。这种架构与当下流行的分布式架构极为契合。
3. 如何安装 RabbitMQ
1:安装 RabbitMQ(下载地址:https://www.rabbitmq.com/install-windows.html)2:安装完 RabbitMQ-------将安装目录 sbin 添加到环境目录中的 Path 中 3:在 Powershell 中执行:rabbitmq-plugins list4:安装 RabbitMQ 可视化管理端:rabbitmq-plugins enable rabbitmq_management5:启动服务后访问 http://localhost:15672 默认的账户密码都是 guest6:修改或者删除该用户(建议先修改密码,然后添加用户,添加之后再删除 guest 用户,或者直接改一个密码吗保留 guest 用户)7:添加一个 Admin 用户,名称随便,密码随便,角色选择 Admin8:添加完之后刷新 Users 列表会看到该用户,接下来配置 hosts9:新建一个 testhost,然后点击 testhost,进入 host 配置页面,在 Permissions 选项中添加 admin 的访问权限 10:回到 Users 页面可以看到如上的列表,至此 RabbitMQ 配置完成
4:上述的操作可以通过以下命令完成
查看所有用户
配置权限
查看用户权限
设置 tag
删除用户(安全起见,删除默认用户)
5. RabbitMQ 的队列形式
在使用 RabbitMQ 之前,咱们先捋一捋 RabbitMQ 一共有几种使用方式,常用的 5 中队列
第一种:简单队列(一对一模式)耦合性高,生产消费一一对应。
第二种:WorkQueues(工作队列),一个生产,多个消费者共同处理消息。
第三种:订阅模式,1 一个生产者多个消费者,每一个消费者有自己的一个队列,生产者直接将消息发送给交换机,交换机将消息发送给队列,每一个队列都需要绑定到交换机。这种模式可以满足消费者发布一个消息,多个消费者消费同一信息的需求,但 C1、C2 消费的都是相同的数据,有时我们需要 C1 和 C2 消费的信息只有部分差异,比如我们需求:C1 消费增加的数据,C2 消费编辑、增加和删除的数据。
第四种:路由模式,路由模式是在订阅模式基础上的完善,可以在生产消息的时候,加入 Key 值,与 key 值匹配的消费者消费信息。但路由模式中,就如三中提到的 C1、C2、如果 C2 对应的类型更多,就需要写很多 key 值。但其实它只与 C1 有一点差别。
第五种:通配符模式是在路由模式的升级,他允许 key 模糊匹配。*代表一个词,#代表一个或多个词。通过通配符模式我们就可以将 C1 对应的一个 key 准确定为 item.add。而 C2 我们就不需要一一写出 key 值,而是用 item.#代替即可。
6. 以.Net Core 6 控制台应用为例使用 RabbitMQ
创建生产者
创建一对一消费者
版权声明: 本文为 InfoQ 作者【愚公搬代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/56abc55a5370bbe444edba968】。文章转载请联系作者。
评论