RabbitMQ端口操作

1、什么是RabbitMQ

RabbitMQ 是一种可靠且成熟的消息传递和流式处理代理,易于部署在云环境、本地和本地计算机上。目前,全球有数百万人在使用它。

|-------|----------------------|-------------------------------|----------|-------------|
| | RabbitMQ | ActiveMQ | RocketMQ | Kafka |
| 公司/社区 | Rabbit | Apache | 阿里 | Apache |
| 开发语言 | Erlang | Java | Java | Scala&Java |
| 协议支持 | AMQP,XMPP,SMTP,STOMP | OpenWire,STOMP,REST,XMPP,AMQP | 自定义协议 | 自定义协议 |
| 可用性 | 高 | 一般 | 高 | 高 |
| 单机吞吐量 | 一般 | 差 | 高 | 非常高 |
| 消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |
| 消息可靠性 | 高 | 一般 | 高 | 一般 |

从这个表格可以看出,在现在最常用的几个消息队列中,RabbitMQ是最好且最实用的,所以这也就是为什么大众都喜欢用RabbitMQ的原因

1.1、特点

可互操作

RabbitMQ 支持多种开放标准协议,包括 AMQP 1.0 和 MQTT 5.0。有多个可用的客户端库,可以与您选择的编程语言一起使用,只需选择一个。没有供应商锁定!

灵活

RabbitMQ 提供了许多选项,您可以组合这些选项来定义消息如何从发布者发送到一个或多个使用者。路由筛选流式处理联合身份验证等,应有尽有。

可靠

通过确认消息传输跨集群复制消息的能力,您可以使用 RabbitMQ 确保您的消息是安全的。

1.2、优点

可能你会问:明明通过调用接口就可以进行系统之间的交流了,为什么还要用MQ呢?使用MQ当然有他的好处的,主要的好处是三点:解耦、异步和削峰。

1.2.1、解耦

我们通过使用MQ可以进行系统之间的解耦,使得系统之间的耦合度比较低。这也符合高内聚,低耦合的原则。

1.2.2、异步

消息队列的主要特点是异步处理,主要目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能。

所以典型的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作,作为消息放入消息队列。

1.2.3、削峰

流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。

2、RabiitMQ使用

1、安装

以下的安装都是基于虚拟机安装的,如果没有虚拟机但是想使用虚拟机操作RabbitMQ

可以翻看作者以前的作品docker容器的安装以及用法_docker容器的安装和使用-CSDN博客

这里面有虚拟机安装的教程

如果只想从windows系统中操作的话,也可以查看这位作者:windows安装RabbitMQ

首先打开虚拟机,并且启动docker

输入以下指令,直接复制粘贴即可

复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=itheima \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hmall\
 -d \
 rabbitmq:3.8-management

中间的网络/账号密码可以根据自己的需求来更改

安装成功之后,就可以查看MQ是否安装成功了

docker ps

输入这段指令,表示查看现在正在运行的容器有什么,如果显示上面这个就代表已经安装成功了

可以进行下一步了,如果什么也没显示,可能是没启动 ,也可能是没安装成功

docker ps -a

还可以使用这段指令,表示查看所有存在的容器,如果还是没有的话就代表安装失败了

如果有的话,可以执行下面这段指令来启动它

docker start mq

在浏览器输入自己的IP+15672,可以进入mq的端口地址

如果不知道自己的IP 是多少的,在虚拟机中输入ifconfig,可以查看

输入ifconfig后,在下面找到ens33 ,右边的inet 旁边的数字就是自己的虚拟机IP

如果是Windows 的话,直接在地址栏输入localhost:15672就可以了

能看到这个页面,表示rabbit端口已经成功进入了

其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方

  • consumer:消费者,也就是消费消息的一方

  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理

  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。

  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

上述这些东西都可以在RabbitMQ的管理控制台来管理,下一节我们就一起来学习控制台的使用。

2、收发消息

我们打开Exchanges选项卡,发相已经存在了很多的交换机

这些都是用户创建时会自带的交换机,我们可以直接使用这些交换机,也可以自己创建

下方就是创建交换机的地方,我们一般只需要更改Name和Type即可,其他的直接根据默认的选项就可以了

首先我们先使用默认的交换机,先发一条消息试试

直接点击这个以fanout结尾的交换机

往下面翻,在这里可以发送消息,输入完毕后,点击下面的按钮即可

当点击提交后,就可以发现弹出了一个框:消息以发送,但未完成

这是为什么呢,因为此时控制台模拟了生产者发送的消息。由于没有消费者存在,最终消息丢失了,这样说明交换机没有存储消息的能力。

所以说我们需要创建一个消费者来获取这个信息

此时需要打开Queue选项,在下方创建一个队列,作用是用来接收它

同样,只需要修改Name 即可,所以我们设置名字为queue为后缀

点击下方的Add queue 后,就在上方可以看到多了一条队列,这个时候我们就可以将刚刚到交换机给他进行匹配,这样交换机发送消息,这个123.queue1就会接收到消息

点回刚刚的交换机,在这里给他匹配,只需要输入刚刚的名字就可以了

添加之后,这里就会多出一条队列,这样我们就可以开始发送消息,消息发送后,这条队列可以收到我们刚刚发送的消息

还是在这里输入,然后点击发送按钮

这个提示框才表示我们真正的发送成功了,所以交换机的任务就已经完成了

来到这个队列,找到下面的Get Message 按钮,表示**"获取消息"**,这样我们就可以看到刚刚交换机发送过来的消息了

如果想一次让两个队列接收消息,只需再添加一个队列就可以了

3、数据隔离

可以看到,这里有三个用户,但是为什么刚刚只显示了123的交换机呢?

是因为在右上角中,我只选择了123 的用户,也就是说我现在只能看到123 的信息,包括队列,包括交换机都是一样的

这里可以看到,我选择了All 后,将所有的都显示出来了,所以说如果我们只想对一个用户的东西进行操作的话,就可以在这里进行选择,我们将这个称为数据隔离

4、创建用户

创建用户的话也是非常简单,只需要在上方的选项卡中选择Admin

这里就是我们可以添加的地方

Username:用户名

这里的密码可以选择

Password:自定义密码

No password:舍弃密码

一般我们都选择自定义密码,所以不需要选择它

最后在这个框中,直接点击Admin就可以了,这个代表最高权限,这样就创建完毕了

然后点击Add user就可以了

这个时候,我们退出登录,然后重新使用新用户再登陆一遍,如果可以正常进入,代表我们创建完毕了

相关推荐
西***63478 小时前
从信号处理到智能协同:高清混合矩阵全链路技术拆解,分布式系统十大趋势抢先看
网络·分布式·矩阵
阿维的博客日记8 小时前
从夯到拉的Redis和MySQL双写一致性解决方案排名
redis·分布式·mysql
好玩的Matlab(NCEPU)8 小时前
Redis vs RabbitMQ 对比总结
数据库·redis·rabbitmq
好玩的Matlab(NCEPU)10 小时前
消息队列RabbitMQ、Kafka、ActiveMQ 、Redis、 ZeroMQ、Apache Pulsar对比和如何使用
kafka·rabbitmq·activemq
笨蛋少年派12 小时前
zookeeper简介
分布式·zookeeper·云原生
鸽鸽程序猿13 小时前
【RabbitMQ】简介
分布式·rabbitmq
在未来等你13 小时前
Kafka面试精讲 Day 29:版本升级与平滑迁移
大数据·分布式·面试·kafka·消息队列
在未来等你13 小时前
Kafka面试精讲 Day 30:Kafka面试真题解析与答题技巧
大数据·分布式·面试·kafka·消息队列
在未来等你15 小时前
Elasticsearch面试精讲 Day 30:Elasticsearch面试真题解析与答题技巧
大数据·分布式·elasticsearch·搜索引擎·面试