目 录CONTENT

文章目录

RabbitMQ学习

在水一方
2022-03-03 / 0 评论 / 0 点赞 / 112 阅读 / 2,022 字 / 正在检测是否收录...

定义

RabbitMQ:顾名思义就是消息队列,本质是队列,只不过队列中存放的是message,是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)

队列的特点:FIFO先进先出,消息之间可以相互通讯,如A给B发信息,那么A就是上游,B就是下游

为什么要用MQ

1 流量削峰:
场景:例如用户下订单,假如订单系统的并发最多能承受5000次/s ,当流量超过这个临界值时就会导致订单系统宕机,这种情况就可以通过MQ,将消息存到队列中

2 应用解耦
我们A系统将产生的数据发入消息队列中,其它的系统再去消息队列来进行消费,减少了系统间的耦合,这样还有一个好处就是如果一旦A系统出现了故障,其他服务直接来调用A也会导致调用失败。而直接从队列中获取数据这样就能避免这样的问题

image.png

3 异步处理
有些服务间的调用是异步的,例如A调用B,B需要花费很长时间执行,但是A需要知道B什么时候能执行完,以前一般有2种处理方式,A过一段调用B的的查询Api,或者A提供一个Callback(回调)Api,B执行完之后调用Api通知A,但是这两种方式都不是很优雅。🔥使用消息队列后,只需要监听B处理完的消息,当B执行完成之后发消息MQ,MQ将消息转发给A服务🔥

MQ的分类

1 ActiveMQ:

JMS(Java Message Service)JAVA消息服务: 基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现

2 Kafka:谈到大数据中的消息传递则绕不开Kafka,kafaka是分布式的,为大数据而生的消息中间件,目前使用的比较多,最大优点就是高吞吐量、时效ms级可用性非常高,kafka web管理界面kafaka-manager,在日志领域比较成熟

3 RoketMQ:阿里巴巴开源消息中间件,用java实现,设计时参考了Kafaka

RabbitMQ的优点

可复用的企业级消息系统,是当前最主流的消息中间件之一,性能较好,吞吐量达到万级

RabbitMQ的安装

Docker的安装方式后续再拓展

1 官网下载页面:
https://www.rabbitmq.com/download.html
Erlang-rpm下载地址:https://github.com/rabbitmq/erlang-rpm/releases

1 上传rabbitMQ到/usr/local/rabbitMQ路径下
image.png

2 安装文件顺序:

1 rpm -ivh erlang-21.2.6-1.el7.x86_64.rpm
image.png

2 yum install socat -y
image.png

3 rpm -ivh rabbitmq-server-3.7.13-1.el7.noarch.rpm
image.png

常用命令

1 添加开机启动rabbitMQ的命令
chkconfig rabbitmq-server on
image.png

2 启动服务:/sbin/service rabbitmq-server start
image.png

3 查看服务状态:/sbin/service rabbitmq-server status
image.png

4 停止服务:/sbin/service rabbitmq-server stop
image.png

安装web界面插件

  • 安装插件之前需要先关闭服务器:/sbin/service rabbitmq-server stop

  • 安装插件:rabbitmq-plugins enable rabbitmq_management
    image.png

  • 启动服务

访问rabbitmq页面:http://192.168.1.116:15672/
如果无法访问需要关闭防火墙,命令为: systemctl stop firewalld
image.png

添加用户并设置权限

rabbitmqctl add_user admin abc789(创建一个admin用户密码为abc789)
删除用户: rabbitmqctl delete_user user
改密码: rabbimqctl change_password

设置用户角色:
rabbitmqctl set_user_tags admin administrator
image.png
image.png

设置权限格式:
rabbitmqctl [-n ] [-l] [-q] set_permissions [-p ]

命令为:rabbitmqctl set_permissions -p "/" admin "." "." ".*"
image.png

查看所有用户:rabbitmqctl list_users
image.png

每个visual host代表着MQ的一个库,您可以自己来添加不同的visual host库,不同的库中的交换机和队列是不一样的
image.png

java操作MQ

以上安装好了MQ之后,接下来写如何通过java来往队列中放消息(生产者)然后转发给消费者

生产者和消费者模式

课程学习

https://www.bilibili.com/video/BV1cb4y1o7zz?from=search&seid=7909208108675773300&spm_id_from=333.337.0.0

0

评论区